使用Certbot申请Let'sEncrypt免费证书

半年前在自己的网站上配了个SSL证书,当时是用ZeroSSL进行证书申请的。但是证书三个月就会过期,每次都去手动申请,着实让人头痛。后来到Let’s Encrypt官网看了下,在它提供的ACME协议客户端列表中,最推荐使用Certbot

官方给出的ACME客户端列表

Certbot是有个最大的好处是,能自动化部署Let’s Encrypt证书。

Certbot官网,你可以根据自己的服务器操作系统以及使用的WebServer进行选择。

它会给出相应的certbot的安装和配置命令。连nginx都帮你配好!

CentOS7下Nginx配置ssl证书

独立申请证书

certbot提供的全自动化的配置是挺不错的,但是个人总觉得全自动的隐藏过多细节,心里有点不踏实。

所以还是用独立申请(与使用哪个WebServer无关)。

1
certbot certonly --standalone --email 1938304905@qq.com -d www.hufeifei.cn -d blog.hufeifei.cn

命令执行详情

生成证书和私钥后在nginx的配置文件中手动配置上面的两个文件,具体可以参考nginx文档

过期重申

certbot renew命令能帮我们检查证书还有多少天过期,如果接近到期时间,会帮我们更新证书。

同时因为更新证书要用到80端口,所以在更新之前要将nginx停掉,certbot提供了两个钩子参数--pre-hook--post-hook让我们执行命令前后关闭或开启nginx。

1
certbot renew --pre-hook "/usr/local/nginx/sbin/nginx -s stop" --post-hook "/usr/local/nginx/sbin/nginx"

正常没过期的时候执行这个命令:

没过期的时候执行该命令

定期重申

为了省去每三个月都上服务器执行一次命令的繁琐,我们可以在corntab中加一个定时任务定期执行上面的renew命令:

每个月的1号执行一次重申命令。

crontab

参考:https://certbot.eff.org/docs/using.html#certbot-commands