介绍
前一段时间 Let’s Encrypt 发信说证书快要过期了,估计是原有的 certbot 不兼容了,需要升级到新版本。之前部署 HTTPS 证书的文章:
环境
- CentOS 7.6.1810
- Nginx 1.16.0
文档
官网已经给出了详细的教程,只要选择当前使用的操作系统与 HTTP 服务器:
连接到服务器
SSH 连接到服务器并获得 sudo 权限,可以简单地执行 su 切换到 root 用户。
安装 snapd
严格按照文档指示执行命令即可。
1
2
3
4
|
$ sudo yum install epel-release
$ sudo yum install snapd
$ sudo systemctl enable --now snapd.socket
$ sudo ln -s /var/lib/snapd/snap /snap
|
这里一定要安装 classic 版本,否则后面安装 certbot 时会报错:
1
2
3
|
$ sudo snap install --classic certbot
error: cannot install "certbot": classic confinement requires snaps under /snap or symlink from
/snap to /var/lib/snapd/snap
|
更新 snapd
虽然文档中将更新的两条命令放在一起执行,但是会报错。
1
2
3
|
$ sudo snap install core; sudo snap refresh core
error: too early for operation, device not yet seeded or device model not acknowledged
error: too early for operation, device not yet seeded or device model not acknowledged
|
分开执行就不会有问题:
1
2
3
|
$ sudo snap install core
$ sudo snap refresh core
snap "core" has no updates available
|
安装 Certbot
移除已安装的 certbot,安装新版本 certbot,建立方便使用 certbot 的符号链接
1
2
3
4
|
$ sudo yum remove certbot
$ sudo snap install --classic certbot
certbot 1.21.0 from Certbot Project (certbot-eff✓) installed
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
|
更新证书
执行更新命令,按照提示选择要更新的域名:
访问下网站确认证书已生效。
设置自动更新证书
更新证书测试,确定没有任何异常:
1
|
$ sudo certbot renew --dry-run
|
了解 certbot renew 的参数,修改更新证书命令:
需要编辑原有的 crontab 定时任务,将其更新为新版本:
1
2
|
$ sudo crontab -e
0 */12 * * * test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot renew --post-hook "/usr/sbin/nginx -s reload" >> /root/certbot.log
|