多1Panel面板域名SSL证书同步
前言
最初是华为云推出了免费DNSSEC,所以把域名NS切换到了华为云,之后发现1Panel没有华为云DNS账户(当然现在已经适配了,1Panel牛批!),第三方证书自动化又无法很好的联动1Panel,尤其是多服务器,多网站较分散的情况。
同步脚本
有大佬根据1panel rest-api 文档手搓了个脚本,可以说是非常方便了 (感谢大佬!!!)
https://github.com/1Panel-dev/1Panel/discussions/6299#discussioncomment-10932704
这个脚本就是把本地证书文件通过API更新1Panel已上传的证书
使用场景:
- 如果你想多台装有1panel的服务器同步ssl更新
- 使用第三方自动化证书申请,但需要在1panel使用的
- 不想重复在多个1Panel中配置DNS/ACME账户,申请相同域名的证书(如泛域名证书)
如何使用
我的场景是:A服务器1Panel申请证书,推送证书到A服务器本地目录/opt/ssl/vlo
,申请成功后执行:SCP免密命令同步到 其他服务器 /opt/ssl/vlo
目录下,以及SSH命令免密远程执行 其他服务器 /opt/ssl/vlo.sh
同步脚本
scp /opt/ssl/vlo/fullchain.pem root@1.1.1.1:/opt/ssl/vlo
scp /opt/ssl/vlo/privkey.pem root@1.1.1.1:/opt/ssl/vlo
# 将证书文件上传到其他服务器
ssh root@1.1.1.1 "cd /opt/ssl && bash vlo.sh"
# 执行其他服务器上的同步脚本,将最新证书信息同步到1Panel面板
因为需要免密执行scp命令和ssh命令,所以需要在 其他服务器 上配置好A服务器的SSH公钥,ssh请开启允许密钥登录,开启后重启ssh服务
脚本设置
1Panel API 地址填写需要域名:
1Panel新建反向代理网站,代理地址 http(s)://ip:面板端口
注意:如果面板本身开启ssl访问,需要选择https
面板安全入口,需要把安全入口转换为Base64 ,如panel
转Base64cGFuZWw=
定义证书相关信息
# 填写自己证书路径
# 证书私钥路径
PRIVATE_KEY_PATH="/opt/ssl/vlo/privkey.pem"
# 证书文件路径
CERTIFICATE_PATH="/opt/ssl/vlo/fullchain.pem"
SSL_ID获取: 如果还没有上传证书,需要手动上传一次需要同步的证书,然后打开F12选择网络,点证书详情
查看文件显示数字,数字就是脚本用到的SSL_ID
DESCRIPTION="sync from Server-A"
是备注信息,自定义就行
最后
配置好之后,证书在一台1panel服务器上申请,就能同步到其他多台服务器的1Panel面板,且不用手动更新网站证书;当然也可以是使用第三方自动化证书申请其他品牌证书时,使用此脚本同步到1Panel面板使用