首页 > 其他分享 >[转载] 把网站免费从HTTP升级为HTTPS,是很简单的

[转载] 把网站免费从HTTP升级为HTTPS,是很简单的

时间:2023-01-09 10:23:10浏览次数:41  
标签:awaimai HTTP 证书 -- nginx HTTPS 转载 com certbot

使用 Let's Encrypt的免费证书让网站升级为HTTPS,那么如何使用 Let's Encrypt的免费证书让网站升级为HTTPS呢?

或许你在一个博客上看到右下角,或者时不时的弹出广告,这种就是运营商劫持,你不想让它这样,这时候,HTTPS的价值就能表现出来了。

 

HTTPS的好处还有很多,但仅此这一条,就够我们花心思去升级我们的博客系统了。


1 来了解一下什么是Let's Encrypt 
Let's Encrypt 就是一个 证书。 如果要启用HTTPS,我们就需要从授权机构(以下简称CA) 处获取一个证书,
而从 Let's Encrypt ,我们可以获得网站域名的免费的证书。
 
2 Certbot 简介
Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们自动获取免费的Let's Encrypt 证书。
Certbot 是支持所有 Unix 内核的操作系统的,本文的例子是基于CentOS 7来讲解的。
3 获取免费证书
3-1 安装Certbot客户端
$ yum install certbot                          # CentOS
$ apt-get update && apt-get install certbot    # Ubuntu
$ apk add --no-cache certbot                   # 用Docker alpine:nginx构建的容器
3-2 获取证书
certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com
上面的这个命令行会为 awaimai.com 和 www.awaimai.com 这两个域名生成一个证书。使用--webroot 模式会在/var/www/awaimai中创建.well-known 文件夹。
此文件夹包含一些验证文件,certbot 会通过访问 example.com/.well-known/acme-challenge验证您的域有没有绑定到此服务器。   证书生成后,我们可以在/etc/letsencrypt/live/查看目录下域名对应的文件夹,里面存放了指向证书的一些快捷方式。   当然,我们也可以用--config-dir指定保存证书的路径:
certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com --config-dir /etc/nginx/conf.d/certs
certbot提供很多的参数可以用,可参考这里
https://certbot.eff.org/docs/using.html#configuration-file 3-3 standalone模式  在大多数情况下,这个命令都可以满足需求。
但是有时我们的某些服务没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。   certbot 还有另外一种模式--standalone , 此模式不需要指定网站根目录,它将自动启用服务器的端口443以验证域名的归属。 我们有其他例如nginx的服务,它占用了443端口,我们就要先停止这些服务,在生成证书完毕后,我们再启用这些服务。
certbot certonly --standalone -d example.com -d www.example.com
至此,我们的第一证书生成已完成。下一步是配置我们的Web服务器并启用HTTPS。

 

4 Nginx 配置启用 HTTPS
我的配置是使用的是Nginx 服务器来转发请求,这里贴一下我的Nginx配置。
server {
        listen 80;
        server_name www.awaimai.com awaimai.com;
        rewrite ^(.*) https://www.awaimai.com$1 permanent;
}

server {
        listen       443 ssl;
        ssl          on;
        server_name  www.awaimai.com;
        root         /var/www/html/awaimai;
        index        index.php;

        ssl_certificate /etc/nginx/conf.d/certs/live/awaimai.com/fullchain.pem;
        ssl_certificate_key /etc/nginx/conf.d/certs/live/awaimai.com/privkey.pem;

        location ~ .php$ {
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /.ht {
            deny all;
        }

}
配置主要是监听 443 端口和启用 SSL,并配置了 SSL 的证书路径(公钥,私钥的路径),通过这些配置,我们就可以成功启用Https了。 你打开网站的时候就可以看到标有 安全 的字样。比如:



5 自动更新 SSL 证书
配置完这些后,我们的工作尚未完成。
Let's Encrypt 提供的证书只有90天的有效期,我们必须在这些证书过期之前重新获得它们。有什么办法呢?
 
certbot 给我们提供了一个很方便的命令,那就是

certbot renew                                        # 使用【默认配置目录】的更新命令
certbot renew --config-dir /etc/nginx/conf.d/certs   # 使用【自定义配置目录】的更新命令

使用此命令,他将自动检查系统中的证书并自动更新它们。


注意:更新完成后需要重启Nginx:nginx -s reload
我们可以运行这个命令测试一下

certbot renew --dry-run
如果运行的时候出现了这个错误:

Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.

这是因为生成证书的时候使用的是 --standalone 模式。
这个模式在验证域名时,此模式需要启用端口443。此错误意味着要启用的端口已被占用。

 

这时候必须先关掉nginx,运行以下命令:

nginx -s stop

运行这个命令,没有报错的话,也就是所有的证书都刷新成功。证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。

 

当然,这种不用我们每次去更新,我们容易忘记的,可以用linux的定时任务来完成。用 crontab做一个定时任务就可以了

新建了一个文件 certbot-auto-renew-cron,写上 cron 计划:

15 2 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx -s start"  # standalone模式
15 2 * */2 * certbot renew --post-hook "nginx -s reload"                            # 非standalone模式

命令的意思就是:每隔 两个月的 凌晨 2:15 执行更新操作。

--pre-hook 表示执行更新操作之前要做的事情。

--standalone模式的证书需要停止 nginx 服务,解除端口占用。

--post-hook 表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用

 

最后我们用 crontab 来启动这个定时任务

crontab certbot-auto-renew-cron

至此,整个网站升级到HTTPS就完成了。

 

6 删除证书
删除所有证书:
$ sudo certbot delete

 

删除指定证书:

$ sudo certbot delete --cert-name example.com

 

删除指定目录下的指定证书:

$ certbot delete --cert-name example.com --config-dir /etc/nginx/conf.d/ssl

 

来源:http://www.shanhubei.com/archives/2540.html

 

标签:awaimai,HTTP,证书,--,nginx,HTTPS,转载,com,certbot
From: https://www.cnblogs.com/shanhubei/p/17036144.html

相关文章

  • IIS部署https网站使用自签名证书
    转自:http://www.nat123.com/pages_8_751.jsp IIS部署https网站使用自签名证书及绑定域名的参考图文。(内网配置好https网站后可以使用nat123映射将网站映射到外网访问)1,......
  • Jmeter学习:配置原件--CSV 配置元件加载变量/HTTP 请求默认简化脚本/HTTP 头部管理应用
    一、CSV配置元件加载变量功能:通过该元件,我们可以通过csv初始化变量,并给后续组件使用1.组件位置:线程组右击,Add->ConfigElement->CSVDataSetConfig2.默认情况下......
  • Jmeter学习:录制http/https 脚本
    1.新建一个HTTPRequestDefaults设置好协议、IP、端口号2.jmeter当中建立http代理服务器3.启动代理服务器4.(仅录制https时)浏览器安装证书,证书路径在$JMETER_H......
  • http转向https
    很多时候我们在地址栏输入的是http,但是会自动转向到https,要实现这个功能,我们需要配置TomcatServletWebServerFactory书上讲的是EmbeddedServletContainerFactory,但是现......
  • 4.HTTP
    HTTP笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)视频教程(P85~P87)HTTP简介概念:HyperTextTransferProtocol,超文本传输协议,规定了浏览器和服务......
  • HTTP下同一IP不同端口提供不同网页服务
    环境:CentOS7httpd原理简述:通过修改配置文件中的监听端口及增加虚拟主机配置文件来达到同一IP不同端口提供不同网页服务安装httpdyuminstall-yhttpd查看配置文件......
  • [转载]VB6 / VBA 的秘密
    [转载]在VBA中使用WindowsAPIhttps://www.cnblogs.com/isunlitao/p/6189067.html这个写得也很不错,就不贴过来了,毕竟都是在博客园,要丢也会一起都丢了。[转载]VB6/VBA......
  • [转载]Visual Basic 6 Win32 API Tutorial
    VB6是上个世纪末,本世纪初的技术,极大的方便了普通人在Windows下编写代码,实现功能,在这以前,小伙伴只能学习C/C++/Pascal,还必须学习Windows系统基本架构才能行。突然想要学习......
  • 加解密与HTTPS(6)
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~随着成本的下降,主流网站都已经开始使用HTTPS了。但有了可信机构颁发的证书,网站就真的绝对安全了吗?以之前出现过的上大学被......
  • requests、aiohttp、httpx请求对比
    1.请求1000速度排名模块速度requests不保持连接1324.95requests保持连接287.08httpx同步1350.26httpx[异步]一个AsyncClient12.53httpx[异步]......