免费申请Let's Encrypt HTTPS 证书(登陆网站和脚本两种方法)

本文详细介绍两种免费HTTPS证书的申请方法,包括SSLForFree的手动验证流程与Let’sEncrypt的自动化证书签发过程,后者使用acme.sh脚本实现一键申请及自动续期。

方法一(要交互,成功率高)
申请过程
1.首先打开SSL For Free (https://www.sslforfree.com/)。
在这里插入图片描述
在这里插入图片描述
3.此时需要选择验证方式,分别为“自动FTP验证”(会要求输入FTP信息,担心安全的还是不要选择这一项)、“手动验证”(传文件到FTP指定位置,这里我们选择这一项)以及用DNS解析验证。
在这里插入图片描述
选择第二项“Manual Verification”。
4.点击新出现的按钮后变成“重试手动验证”,下面也出现相应下载文件和步骤提示,然后点击下载文件。
在这里插入图片描述
下载完成后登录FTP在网站根目录下新建文件夹:.well-known/acme-challenge/ (按提示来就行)。
在这里插入图片描述在这里插入图片描述
然后,把刚才下载的文件上传到这个目录,然后点击页面中那个验证链接,验证是否上传成功,成功后会看到一段字符串,其实就是你刚才下载上传的那个文件的内容。
此时你就可以点击“Download SSL Certificate”下载你的证书了。
5.可能会提示登录,这里注册个帐号就是了,也方便你以后更新证书(证书有效期只有90天,需要手动更新或者写脚本自动更新),然后可以看到相应的证书、私钥、CA包什么的,建议先下载到本地保存,然后再去进行安装。
在这里插入图片描述
至此,一个免费的https证书就申请好了。

方法二(不用交互,成功率和网络以及对方限制有关)
本文仅记录给自己的网站添加“小绿锁”的动手操作过程,不涉及HTTPS工作原理等内容的讲解,感兴趣的同学可以参考篇尾的文章自行了解。
简单了解下我的实验环境:
云服务器:CentOS 7.4
网站宿主:Nginx 1.12.2
备案域名:www.esofar.cn
这里以www.esofar.cn作为演示域名,届时一定要修改为自己的域名。
什么是 Let’s Encrypt

Let’s Encrypt是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。
简单的说,借助Let’s Encrypt颁发的证书可以为我们的网站免费启用HTTPS(SSL/TLS) 。
Let’s Encrypt免费证书的签发/续签都是脚本自动化的,官方提供了几种证书的申请方式方法,点击此处快速浏览。
官方推荐使用Certbot客户端来签发证书,这种方式可参考文档自行尝试,不做评价。
我这里直接使用第三方客户端acme.sh申请,据了解这种方式可能是目前Let’s Encrypt免费证书客户端最简单、最智能的 shell 脚本,可以自动发布和续订Let’s Encrypt中的免费证书。
安装acme.sh

安装很简单,一条命令:
curl https://get.acme.sh | sh
整个安装过程进行了以下几步,了解一下即可:
把acme.sh安装到当前用户的主目录$HOME下的.acme.sh文件夹中,即~/.acme.sh/,之后所有生成的证书也会放在这个目录下;
创建了一个指令别名alias acme.sh=~/.acme.sh/acme.sh,这样我们可以通过acme.sh命令方便快速地使用acme.sh脚本;
自动创建cronjob定时任务, 每天0:00点自动检测所有的证书,如果快过期了,则会自动更新证书。
安装命令执行完毕后,执行acme.sh --version确认是否能正常使用acme.sh命令。

https://github.com/Neilpang/acme.sh
v2.7.9

如有版本信息输出则表示环境正常;如果提示命令未找到,执行source ~/.bashrc命令重载一下环境配置文件。
整个安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录~/.acme.sh/中。

生成证书

据 acme.sh 官方文档介绍,其实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证。
也就是我们有两种选择签发证书,这里我直接选择 http 验证方式,另外一种方式本篇不做介绍,可参考文档自行尝试。
签发证书也很简单,一条命令:

acme.sh --issue -d esofar.cn -d www.esofar.cn -w 
/home/wwwroot/esofar.cn

简单解释下这条命令涉及的几个参数:
–issue是acme.sh脚本用来颁发证书的指令;
-d是–domain的简称,其后面须填写已备案的域名;
-w是–webroot的简称,其后面须填写网站的根目录。
证书签发成功会有如下输出:

在这里插入图片描述
在这里插入图片描述
从截图看出,生成的证书放在了/root/.acme.sh/esofar.cn目录。
另外,可以通过下面两个常用acme.sh命令查看和删除证书:

查看证书列表

acme.sh --list

删除证书

acme.sh remove <SAN_Domains>

至此,证书就下载成功。

安装证书

我的站点是由Nginx承载的,所以本节内容重点记录如何将证书安装到Nginx,其他 webserver 请参考 acme.sh 文档自行实践。废话不多说,进入本节正题。
上一小节,生成的证书放在了/root/.acme.sh/esofar.cn目录,因为这是acme.sh脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让Nginx的配置文件直接读取该目录下的证书文件。
正确的做法就是使用–installcert命令,指定目标位置,然后证书文件会被copy到相应的位置。
一条命令即可解决:

acme.sh  --installcert -d esofar.cn \
         --key-file /etc/nginx/ssl/esofar.cn.key \
         --fullchain-file /etc/nginx/ssl/fullchain.cer \
         --reloadcmd "service nginx force-reload"

这里我将证书放到了/etc/nginx/ssl/目录下。
输出如下信息,则操作成功:
在这里插入图片描述
最后一步就是,修改Nginx配置文件启用ssl,修改完成后需要重启下Nginx,这一块不再详述。Nginx配置请参考:

 server {
        listen 443 ssl;
        server_name esofar.cn;
        
        ssl on;
        ssl_certificate      /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key  /etc/nginx/ssl/esofar.cn.key;

        root /home/wwwroot/esofar.cn;
        index index.html;
    
        location / {
            try_files $uri $uri/ @router;
            index index.html;
        }
    
        location @router {
            rewrite ^.*$ /index.html last;
        }
    }
    
    server {
        listen 80;
        server_name esofar.cn;
        return 301 https://$server_name$request_uri;
    }

完成证书部署后可以通过如下站点检测网站的安全级别:
https://myssl.com
https://www.ssllabs.com
更新证书

目前Let’s Encrypt的证书有效期是90天,时间到了会自动更新,您无需任何操作。 今后有可能会缩短这个时间, 不过都是自动的,不需要您关心。
但是,您也可以强制续签证书:
acme.sh --renew -d example.com --force

更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步。
升级 acme.sh 到最新版:

acme.sh --upgrade

如果您不想手动升级,,可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

您也可以随时关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值