查看证书信息
sudo certbot certificates
返回
Found the following certs:
Certificate Name: fileserver.kkappstore.com
Serial Number: 31f31965a147edf46bdb32154d572201585
Key Type: ECDSA
Domains: fileserver.kkappstore.com
Expiry Date: 2023-08-02 03:02:37+00:00 (VALID: 49 days)
Certificate Path: /etc/letsencrypt/live/fileserver.kkappstore.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/fileserver.kkappstore.com/privkey.pem
撤销证书
certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
更改证书的密钥类型
certbot renew --key-type ecdsa --cert-name example.com --force-renewal
更新证书
Let’s Encrypt CA颁发短期证书(90天)。确保您至少在3个月内更新一次证书。
certbot renew
renew只更新即将到期的证书
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" --deploy-hook "echo deploy-hook run"
pre-hook 和 post-hook 分别是尝试更新证书(不一定更新)前后执行的指令
如果您希望钩子仅在成功续订后运行,–deploy-hook后添加指令
如果您手动强制更新证书,–force-renewal 忽略过期时间
所以,如果你需要手动更新证书
sudo certbot renew --force-renewal --deploy-hook "sh /home/hsx/snap/renewCert.sh"
刷新后可以看到证书颁发日期改变了。
测试是否配置了自动续订
一般正确安装后就配置了自动续订
sudo certbot renew --dry-run
更新certbot的命令安装在以下位置之一:
-
/etc/crontab/
/etc/cron.*/*
systemctl list-timers
systemctl list-timers
可以看到 snap.certbot.renew.service
服务
添加运行时钩子
会自动运行 /etc/letsencrypt/renewal-hooks/ 下 deploy post pre 目录下的sh脚本
sudo sh -c 'printf "#!/bin/sh\nsh /home/hsx/snap/renewCert.sh\n" > /etc/letsencrypt/renewal-hooks/deploy/afterRenew.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/afterRenew.sh
现在会在更新成功后自动执行钩子,不用再指定钩子函数
测试:
sudo certbot renew --force-renewal
自行设置自动续订
一般Certbot已经配置了自动定时运行。
如果你需要自行设置自动续订
Linux系统需要向/etc/crontab添加一个cron作业:
SLEEPTIME=$(awk 'BEGIN{srand(); print int(rand()*(3600+1))}'); echo "0 0,12 * * * root sleep $SLEEPTIME && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
总结
如果你想在新的服务器配置https证书
- 安装certbot(https://certbot.eff.org/instructions?ws=other&os=ubuntubionic)
- 拷贝项目中的
renewCert.sh
文件到~/snap/目录,renewCert.sh为更新成功后执行的脚本 - 添加更新成功运行时钩子:
sudo sh -c 'printf "#!/bin/sh\nsh /home/hsx/snap/renewCert.sh\n" > /etc/letsencrypt/renewal-hooks/deploy/afterRenew.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/afterRenew.sh
- 测试: sudo certbot renew --force-renewal
- 进入网站,点击网址处的加密标志,查看颁发日期是否是新的。
如果你想手动更新https证书:
sudo certbot renew --force-renewal --deploy-hook "sh /home/hsx/snap/renewCert.sh"
PS: 等了两个月,发现证书颁发日期更新了,说明成功了