如果不是使用 CloudFlare DNS,需要自己配置 acme-dns
。
注意,对应的网站需要在宝塔后台开启强制 SSL,这样宝塔才会在 Nginx 配置文件里设置对应的内容
acme.sh
首先安装 acme.sh
:
HiCA - 安装 ACME.sh
https://www1.hi.cn/docs/getting-started/acme.sh-installation/
curl https://get.acme.sh -s | sh -s
完成后通过 acme.sh --version
确认:
# acme.sh --version
https://github.com/acmesh-official/acme.sh
v3.0.5
开启自动更新:
acme.sh --upgrade --auto-upgrade
申请 Google Public CA 权限
参照:kn007的个人博客 - 使用acme.sh和acme-dns申请Google免费泛域名SSL证书
https://kn007.net/topics/using-acme-sh-and-acme-dns-get-googles-free-wildcard-ssl-certificate/ (存档)
获得 b64MacKey
和 keyId
。
准备 CloudFlare DNS API
参照:烧饼博客 - 使用 acme.sh 配置自动续签 SSL 证书 > 「使用 DNS 验证签发证书」
https://u.sb/acme-sh-ssl/#%E4%BD%BF%E7%94%A8-dns-%E9%AA%8C%E8%AF%81%E7%AD%BE%E5%8F%91%E8%AF%81%E4%B9%A6(存档)
编写脚本
更新网站证书
当申请证书完毕/更新后,会自动执行下面的脚本,请保存到 /path/to/GoogleCA_ACME.sh
文件中(/path/to/
自己定义,同步修改后面「配置 acme.sh」脚本的 --reloadcmd
)
保存后记得 chmod +x GoogleCA_ACME.sh
tld_domain
填写要申请的顶级域名。当你宝塔后台的域名也是这个顶级域名时,可以把
forBtPanel
设置为1
,这样脚本会同步替换掉面板的 SSL 文件
#!/bin/bash
#-*- coding:utf-8 -*-
# 自行修改
tld_domain=""
forBtPanel=1
cd /www/wwwroot
# 获取此域名顶级域名和二级域名列表
count=0
declare -a array
for i in `ls`;do
if [[ ${i} =~ ${tld_domain} ]]
then
array[${count}]=${i}
count=$(expr ${count} + 1)
fi
done
# 复制到对应域名目录
for j in ${array[*]}
do
# 备份
cp -rf /www/server/panel/vhost/cert/${j}/privkey.pem /www/server/panel/vhost/cert/${j}/privkey.pem.bak
cp -rf /www/server/panel/vhost/cert/${j}/fullchain.pem /www/server/panel/vhost/cert/${j}/fullchain.pem.bak
# 替换
cp -rf /root/.acme.sh/${tld_domain}/server.rsa.key /www/server/panel/vhost/cert/${j}/privkey.pem
cp -rf /root/.acme.sh/${tld_domain}/bundle.rsa.crt /www/server/panel/vhost/cert/${j}/fullchain.pem
done
/etc/init.d/nginx restart
# 如果面板也要替换的话
if [[ $forBtPanel -eq 1 ]]
then
# 备份
cp -rf /www/server/panel/ssl/privateKey.pem /www/server/panel/ssl/privateKey.pem.bak
cp -rf /www/server/panel/ssl/certificate.pem /www/server/panel/ssl/certificate.pem.bak
# 替换
cp -rf /root/.acme.sh/${tld_domain}/server.rsa.key /www/server/panel/ssl/privateKey.pem
cp -rf /root/.acme.sh/${tld_domain}/bundle.rsa.crt /www/server/panel/ssl/certificate.pem
#重载面板
bt reload
fi
如果你在宝塔后台新建了一个网站(也是此顶级域名),可以手动执行这个脚本重新替换一次 SSL
配置 acme.sh
随便新建个 sh 文件执行就行,这个只需要执行一次,记得根据上面脚本的路径同步修改底下 --reloadcmd
#!/bin/bash
#-*- coding:utf-8 -*-
email="你的 Google Cloud Platform 邮箱"
b64MacKey=""
keyId=""
tld_domain=""
CF_Token=""
CF_Account_ID=""
CF_Zone_ID=""
if [ ! -d "/root/.acme.sh/${tld_domain}" ]; then
mkdir /root/.acme.sh/${tld_domain}
fi
export CF_Token=${CF_Token}
export CF_Account_ID=${CF_Account_ID}
export CF_Zone_ID=${CF_Zone_ID}
#申请证书
/root/.acme.sh/acme.sh --set-default-ca --server google
/root/.acme.sh/acme.sh --register-account --server google -m ${email} --eab-hmac-key ${b64MacKey} --eab-kid ${keyId}
/root/.acme.sh/acme.sh --issue --dns dns_cf -d '*.'${tld_domain} -d ${tld_domain} \
--cert-file /root/.acme.sh/${tld_domain}/server.rsa.crt \
--key-file /root/.acme.sh/${tld_domain}/server.rsa.key \
--fullchain-file /root/.acme.sh/${tld_domain}/bundle.rsa.crt \
--ca-file /root/.acme.sh/${tld_domain}/issuer.rsa.crt \
--reloadcmd "/path/to/GoogleCA_acme.sh"
淄博测漏 Chrome 104.0.0.0
感谢分享,赞一个
忘忧GX Chrome 108.0.0.0 YaBrowser/23.1.2.987 Yowser/2.5
很用心的教程,谢谢了