背景
我通过AI制作了不少关于签发ssl证书的脚本,目的是方便无脑安装,不需要懂代码。
但全都是基于acme.sh这个工具来设计的脚本,而且证书申请有点慢,有时还会申请失败。
然后我发现了certbot
, 安装证书可谓神速!
certbot文档: https://eff-certbot.readthedocs.io/en/latest/using.html#managing-certificates
由于我建站都是使用的宝塔面板(7.7.0原版),所以结合宝塔设计了此脚本,
为什么我不用宝塔自带的方式安装证书,因为我就没安装成功过~
脚本
环境:ubuntu22.04
certbot: 基于Let’s Encrypt (默认ecc证书)
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ssl-cert.sh && chmod +x ssl-cert.sh && ./ssl-cert.sh
其他
首次安装证书后,需要到宝塔面板,选择站点,找到ssl保存一下,目的是之后的自动续签。
安装成功后,选择菜单4,测试续签是否正常,看到renewals succeeded
说明正常了。
修改续签定时任务
查看原本的certbot定时任务:
cat /etc/cron.d/certbot
其实就是在后面添加了 --deploy-hook "/etc/init.d/nginx restart"
参数,目的是重启nginx,使其生效。之后就可以高枕无忧的自动续签证书了
证书路径
certbot生成的证书路径是:/etc/letsencrypt/live
续签配置路径:/etc/letsencrypt/renewal
脚本会把证书复制到站点证书目录
certbot会在证书离到期日还剩30天内续签证书
友情提示
如果一个域名在短时间内,多次申请,全部成功(大概6次吧,不记得了),会提示一周后在申请,我是为了测试脚本才遇到的bug。
其他
如果没有创建/etc/letsencrypt/live/aaaa.com目录,可以手动,例如:
sudo mkdir -p /etc/letsencrypt/live/aaa.com
sudo ln -sf /etc/letsencrypt/archive/aaa.com/privkey1.pem /etc/letsencrypt/live/aaa.com/privkey.pem
sudo ln -sf /etc/letsencrypt/archive/aaa.com/fullchain1.pem /etc/letsencrypt/live/aaa.com/fullchain.pem
sudo ln -sf /etc/letsencrypt/archive/aaa.com/cert1.pem /etc/letsencrypt/live/aaa.com/cert.pem
sudo ln -sf /etc/letsencrypt/archive/aaa.com/chain1.pem /etc/letsencrypt/live/aaa.com/chain.pem