宝塔与iStoreOS同步域名证书

我的设备,虚拟机A安装的ubuntu22,已部署宝宝塔面板 + Apache,虚拟机B安装的OpenWrt(iStoreOS),两台设备内网IP各自独立,没有上级网关,动态域名管理在虚拟机B,域名证书及Let's Encrypt 续签都在虚拟机A。

步骤 1:配置虚拟机 A → B SSH 免密登录(自动同步基础)

在虚拟机 A(宝塔) 执行:

# 生成密钥(一路回车,不要设置密码)
ssh-keygen

# 把密钥发送到 OpenWrt(虚拟机B)
# 替换为你的B的IP、SSH端口、root密码
ssh-copy-id -p B的SSH端口 root@B的内网IP

执行后输入 B 的 root 密码,以后 A 连 B 无需密码。
测试是否成功:

ssh root@B的IP -p B端口

直接登录不弹密码 = 成功。

步骤 2:找到宝塔证书真实路径

宝塔 Apache 证书默认路径:

/www/server/panel/vhost/cert/你的域名/

里面有两个关键文件:
fullchain.pem → 证书公钥
privkey.pem → 证书私钥
你可以在宝塔后台: → 网站 → 设置 → 配置文件,确认一下。

步骤 3:自动同步脚本(A 机器上创建)

在虚拟机 A 创建同步脚本:

mkdir -p /root/ssl_sync
vi /root/ssl_sync/sync_to_openwrt.sh

粘贴以下脚本(直接替换你的信息即可):

#!/bin/bash
###########################################################
# 配置区域(只改这里)
###########################################################
DOMAIN="你的域名"               # 例如 abc.com
OPENWRT_IP="192.168.5.2"        # 虚拟机B内网IP
OPENWRT_PORT=22                 # B的SSH端口
OPENWRT_CERT_DIR="/etc/ssl"     # OpenWrt存放证书目录(推荐不改)

# 宝塔证书源目录
SOURCE_CERT="/www/server/panel/vhost/cert/$DOMAIN/fullchain.pem"
SOURCE_KEY="/www/server/panel/vhost/cert/$DOMAIN/privkey.pem"
###########################################################

# 同步证书到 OpenWrt
scp -P $OPENWRT_PORT $SOURCE_CERT root@$OPENWRT_IP:$OPENWRT_CERT_DIR/${DOMAIN}.pem
scp -P $OPENWRT_PORT $SOURCE_KEY root@$OPENWRT_IP:$OPENWRT_CERT_DIR/${DOMAIN}.key

# 在OpenWrt上重启SSL服务
ssh root@$OPENWRT_IP -p $OPENWRT_PORT "/etc/init.d/uhttpd restart"

echo "【同步完成】证书已同步到 OpenWrt 并重启SSL服务"

给脚本授权

chmod +x /root/ssl_sync/sync_to_openwrt.sh

手动测试运行

/root/ssl_sync/sync_to_openwrt.sh

看到 同步完成 就成功了。

步骤 4:配置 OpenWrt 使用证书

登录 OpenWrt 并修改 uhttpd 配置文件

ssh root@B的IP -p 22
vi /etc/config/uhttpd

将配置文件中的

option cert '/etc/ssl/uhttpd.crt'
option key '/etc/ssl/uhttpd.key'

修改成

option cert '/etc/ssl/你的域名.pem'    # 证书文件
option key '/etc/ssl/你的域名.key'     # 私钥文件

步骤 5:配置自动续签同步(宝塔证书更新后自动同步)

在宝塔面板后台:计划任务 → 续签Let's Encrypt证书 → 编辑,在尾部追加同步脚本

/www/server/panel/pyenv/bin/python3 -u /www/server/panel/class/acme_v2.py --renew_v2=1

# 同步istoreos证书
/root/ssl_sync/sync_to_openwrt.sh

以后宝塔自动续签证书 → 自动同步到 OpenWrt → 自动重启 OpenWrt SSL

评论 (0)