飘在云端

东西南北,海角天涯

· webServer · · 449次浏览

宝塔面板免费多域名多通配符证书半自动续订

https://freessl.cn/ 注册一个账户,有个亚洲诚信的 多域名通配符 免费证书,可以自动续签的那种(其实就是要到期的30天内重新颁发,重新部署)

网页右上角有个 ACME 自动化,可能需要付费 1 元(一次性),购买之后可以开始自动化了

到这里填入你的 多域名通配符,我这里测试 5 个多域名通配符都可以顺利签发,更多没试过

2022-08-10T07:28:28.png

点击创建免费的 SSL 证书,根据提示操作,到相应的 域名注册商 做好 DNS 校验的 TXT 记录(仅仅是第一次使用时需要配置一次,后续续订无需任何操作,只要记录不删)

请输入图片描述

根据 教程 部署并签发获得了 证书之后

默认 acme 签发的证书路径是 ~/.acme.sh/你的多域名通配符,如图所示

请输入图片描述

图中 2 个标注的为 服务器完整证书链 和 私钥

此时我们需要把它批量应用部署到宝塔面板上面的网站,写个脚本在签发后手动执行自动部署
新建一个 ssl_cert_copy.sh 文件,粘贴下面内容,并根据你的实际文件名做相应修改

脚本最后一步的 nginx 重启可能需要root权限才能执行

#修改 acme 签发的证书默认名字为宝塔证书的默认名字
mv ~/.acme.sh/acme创建的域名目录名/fullchain.cer ~/.acme.sh/acme创建的域名目录名/fullchain.pem
mv ~/.acme.sh/acme创建的域名目录名/*.0z.gs.key ~/.acme.sh/acme创建的域名目录名/privkey.pem
#复制 acme 签发的证书到宝塔的证书夹目录,并且批量部署到当前执行的服务器上面的所有站点
ls -d /www/server/panel/vhost/cert/* | xargs -n 1 cp -v ~/.acme.sh/*.0z.gs/{privkey.pem,fullchain.pem}
#echo /www/server/panel/vhost/cert/test.0z.gs/ | xargs -n 1 cp -v ~/.acme.sh/*.0z.gs/{privkey.pem,fullchain.pem}
#普通用户重启 nginx 前进行提权,请在 password 那行改成你的当前用户密码,重启 nginx 使更改立即生效,root 用户 取消下行注释,并注释倒数 2-4 行,非 root 用户把 password 改为你的当前用户密码
#/etc/init.d/nginx restart
sudo -S /etc/init.d/nginx restart<<EOF
password
EOF
#重启 nginx 使更改立即生效

此时返回宝塔的网站列表,可以看到所有网站证书已经续订并生效,到期日期也已刷新

请输入图片描述

证书剩余天数在少于 30 天时,会在某个时间自动重新签发新的证书,我们手动执行一次这个批量部署脚本即可,或者使用任务计划 每隔 85 天执行一次

2022-8-10 15:30:40 更新,发现续订时,默认只签发一个月,我们需要添加一个参数让 acme 强制签发 3 个 月的 SSL 证书

2022-08-10T07:35:58.png

如果没有自动续订,就手动执行 acme 的续订脚本进行续订(从 freessl.cn 的 ACME 自动化入口获取命令),自行替换为自己的域名和 ACME 地址:

acme.sh --issue -d *.0z.gs -d 0z.gs -d keccak.top -d *.keccak.top -d *.7y.pw -d 7y.pw -d *.v1.gs -d v1.gs  --dns dns_dp --server --force https://acme.freessl.cn/v2/xxxx/directory/xxxxxxxxxxxxx

最好以 root 身份执行命令签发续订证书,可以减少奇怪的问题

等待签发成功之后再执行批量部署脚本即可 ./ssl_cert_copy.sh

评论 (0条)