多1Panel面板域名SSL证书同步

2024 年 11 月 13 日 星期三(已编辑)
/ , ,
70
AI 生成的摘要
华为云推出免费DNSSEC后,域名NS切换到了华为云。但1Panel没有华为云DNS账户,第三方证书自动化也无法很好联动1Panel。有人根据1Panel REST API文档编写了同步脚本,可以通过API更新1Panel已上传的证书。使用场景包括多台1Panel服务器同步SSL更新、使用第三方自动化证书申请但需要在1Panel使用、以及不想在多个1Panel中重复配置DNS/ACME账户。使用脚本前需要将证书文件通过API上传到1Panel并配置相关信息。配置好后,证书在一台1Panel服务器上申请,就可以同步到其他服务器的1Panel面板,无需手动更新网站证书。

多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面板使用

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...