上一篇我们讲到了使用sslforfree网站申请免费证书,由于这种方法需要每3个月重新申请一次,较为麻烦,这次我们介绍一个大神写的acme.sh脚本来申请let's encrypt的免费证书,这个脚本实现了acme(Automated Certificate Management Environment)协议,且生成的免费证书可以定期自动更新,免去了我们需要手动处理的麻烦。

下面来简单介绍下这个脚本的使用方法:

1、 安装acme.sh

curl https://get.acme.sh | sh

2、 生成免费证书

根据作者的介绍,支持http和dns验证:http 方式的验证原理是在网站根目录下放置一个文件来验证域名所有权;dns 方式的验证原理是在域名服务商的管理面板处添加一条 txt 解析记录来完成验证的。下面以cloudflare域名服务商为例介绍下dns验证方式申请证书的过程

首先需要设置cloudflare API的环境变量:

export CF_Key="xxxxxxxxxxxxxxxxxxx"

export CF_Email="xxxx@xxxx.com"

其中email就是你cloudflare账户的邮箱,key可以在登录cloudflare后在如下页面查看到:https://dash.cloudflare.com/profile

然后使用如下命令申请证书:

acme.sh --issue --dns dns_cf -d sourismu.me -d *.sourismu.me

大神的脚本还支持很多其他服务商的api,更多的用法大家可以到这个地址查阅:https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

3、 安装证书

acme.sh --install-cert -d sourismu.me --key-file /etc/nginx/ssl/privkey.pem --fullchain-file /etc/nginx/ssl/fullchain.pem --reloadcmd "systemctl force-reload nginx.service"

脚本中私钥和证书的地址可以根据实际部署的地址进行对应修改,至此证书的申请就完成了,刷新下网页,看下你的网站是不是已经有了小绿锁了?

4、 证书的更新

根据作者的介绍,申请的证书在 60 天以后会自动更新,无需人工干涉,通过查看crontab,我们也可以看到在安装acme的时候,脚本已经设置了定时任务,会定期对证书进行更新。



PS:
acme协议经常在更新,作者的脚本也会定期更新,因此作者提供了自动更新acme.sh的脚本

acme.sh --upgrade --auto-upgrade


版权声明:本文为原创文章,版权归 nicolaszf 所有,转载请注明出处!

本文链接:https://blog.sourismu.me/archives/25/