半年前在自己的网站上配了个SSL证书,当时是用ZeroSSL进行证书申请的。但是证书三个月就会过期,每次都去手动申请,着实让人头痛。后来到Let’s Encrypt官网看了下,在它提供的ACME协议客户端列表中,最推荐使用Certbot。
Certbot是有个最大的好处是,能自动化部署Let’s Encrypt证书。
到Certbot官网,你可以根据自己的服务器操作系统以及使用的WebServer进行选择。
它会给出相应的certbot的安装和配置命令。连nginx都帮你配好!
独立申请证书
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号执行一次重申命令。