自建的个人网站使用了阿里的ssl证书,以前有一年有限期,现在被改为3个月有限期,费时费力每次要续期,某猫总是喵呜喊着“打钱”。
经济不景气,只能想办法找免费方便的方案。
方案是:Let's Encrypt三个月免费证书 + certbot证书安装续期工具 + cron任务
1,安装certbot工具包
sudo yum install certbot
2,检查一遍环境
查看版本:
certbot --version
检查Nginx是否已安装并正在运行:
sudo systemctl status nginx
检查Nginx配置文件语法:
sudo nginx -t
确认你要替换证书的域名解析是否正确:
ping blog.yeyangt.cn #替换为你自己的域名
3,执行命令将现有证书替换为新证书
这个命令会自动申请证书,并且修改nginx的配置文件,然后执行nginx -s reload。执行这个命令会让你填入邮件,以及同意协议,一步步操作即可。
4,确认证书已经是新证书了
最简单的方案是在自己的网站上查看,从浏览器中打开自己的网站,然后点击锁标志,然后查看证书
或者在nginx配置中查看证书
或者查看certbot的日志
less /var/log/letsencrypt/letsencrypt.log
5、自动更新证书的定时任务配置
A、 创建或编辑根用户的crontab sudo crontab -e B、添加凌晨两点的renew任务: 0 2 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx" C、保存并退出 D、验证cron任务 sudo crontab -l | grep certbot E、测试自动续期配置 sudo certbot renew --dry-run #--dry-run:模拟续期过程,不会实际更改任何证书。用于测试配置是否正确。 F、日志查看 less /var/log/letsencrypt/letsencrypt.log
certbot renew解释下:
1、会首先检查已有的证书是否即将过期,如果证书仍在有效期内,且距离到期还有较长时间,它就不会再次申请新的证书。当证书接近到期时,certbot renew 才会真正向Let’s Encrypt申请新的证书。
2、它是非交互模式下运行,即会自动续期,不需要用户干预。
6、其它:为letsencrypt.log配上定时清理
清理方案不再写了,与证书更新流程无关,只是建议配置上