准备工作
- 1. 首先的首先,您需要确认您宝塔所在服务器已经安装了
acme.sh
。否则请阅读 安装 ACME.sh。 - 2. 以下 2 种方式选择操作 1 项:
- 单独的 IP 站点方式:在宝塔的站点管理,创建一个 IP 的站点。
- 默认站点方式 :在宝塔的站点管理,设置一个 默认站点。
脚本
直接运行脚本不会在到期前获得自动更新。建议您先手工获取证书,然后按照“定时更新”教程获得在到期前获得自动续期。
请不要忘记 修改邮箱那行代码 email="my@example.com"
为您真实邮箱!
脚本中,以下文件是宝塔面板的证书备份,当
bt reload
报错,您可以手工更换回去。
- 私钥备份:
/www/server/panel/ssl/privateKey.pem.bak
,恢复请直接重命名去除结尾的.bak
。- 证书备份:
/www/server/panel/ssl/certificate.pem.bak
,恢复请直接重命名去除结尾的.bak
。
脚本代码
email="my@example.com"
ip=$(curl -s -4 ip.sb)
webroot=$(cat $((grep -r ""$ip /www/server/panel/vhost/nginx/ || grep -r "default_server" /www/server/panel/vhost/nginx/) | grep server_name | awk '{print $1}' | cut -d ':' -f1) | egrep 'root ' | awk '{print $2}' | cut -d ';' -f1)
if [ -z "$webroot" ]; then
echo "请先创建 1 个 IP 站点或者设置 1 个默认站点!"
exit 1
fi
export LE_WORKING_DIR=/root/.acme.sh
/bin/cp -rf /www/server/panel/ssl/privateKey.pem /www/server/panel/ssl/privateKey.pem.bak
/bin/cp -rf /www/server/panel/ssl/certificate.pem /www/server/panel/ssl/certificate.pem.bak
/bin/cp -rf /www/server/panel/vhost/cert/$ip/privkey.pem /www/server/panel/vhost/cert/$ip/privkey.pem.bak
/bin/cp -rf /www/server/panel/vhost/cert/$ip/fullchain.pem /www/server/panel/vhost/cert/$ip/fullchain.pem.bak
/root/.acme.sh/acme.sh --register-account \
--email $email \
--server https://acme.hi.cn/directory && \
\
/root/.acme.sh/acme.sh --issue \
-d $ip --webroot $webroot \
--server https://acme.hi.cn/directory \
--force && \
\
echo "复制宝塔面板证书" && \
/bin/cp -rf /root/.acme.sh/$ip/$ip.key /www/server/panel/ssl/privateKey.pem && \
/bin/cp -rf /root/.acme.sh/$ip/fullchain.cer /www/server/panel/ssl/certificate.pem && \
\
echo "True" > /www/server/panel/data/ssl.pl && \
\
bt reload && \
\
echo "安装站点证书(如有)" && \
/bin/cp -rf /root/.acme.sh/$ip/$ip.key /www/server/panel/vhost/cert/$ip/privkey.pem && \
/bin/cp -rf /root/.acme.sh/$ip/fullchain.cer /www/server/panel/vhost/cert/$ip/fullchain.pem && \
\
bt reload && \
\
echo "成功续期"
成功后,可以刷新 https://< 你的 IP>:8888
即可通过 HTTPS 安全的访问宝塔面板。
定时更新
您可以直接在宝塔“计划任务”添加定时,任务的脚本代码在这里。
设置完成后,可以模拟运行测试一下。如果展示如下,则表示成功。
正文完
发表至: 开源脚本
2023-01-26