宝塔面板博客官方技术博客
宝塔面板

宝塔面板 HTTPS 提示证书不受信任?用 acme.sh 免费给面板配 IP 证书(无需域名)

访问宝塔面板的 HTTPS 地址时如果浏览器提示「证书不受信任」「连接不安全」,原因多半是面板还在用默认的自签名证书。没有域名也能解决:Let’s Encrypt 已支持签发免费的 IP 证书,用 acme.sh 就能给面板换上一个浏览器可信的证书。

为什么面板 HTTPS 会提示「证书不受信任」?

宝塔面板自身提供的 HTTPS 访问默认使用自签名证书。这种证书虽然能实现加密传输,但没被浏览器和操作系统的信任根收录,所以访问面板时通常会出现「证书不受信任」「连接不安全」等提示,需要手动确认才能继续访问。

随着 Let’s Encrypt 正式支持免费 IP HTTPS 证书,即使没有域名,也能给基于 IP 访问的面板签发浏览器可信的证书。下面按四步把面板默认的自签名证书替换成免费的 IP 证书。

注意:Let’s Encrypt 签发的 IP 证书有效期最长只有 160 小时(约 7 天),具体以 Let’s Encrypt 官方说明为准。acme.sh 安装后会自动处理续签,续签后通过部署命令里的 reload 参数重启面板使新证书生效。

第一步:安装 acme.sh 并切换默认 CA

通过 SSH 或面板终端登录服务器,执行下面命令安装 acme.sh:

curl https://get.acme.sh | sh -s email=my@example.com

把 my@example.com 换成你的真实邮箱。安装完成后执行 source ~/.bashrc 让 acme.sh 命令生效(或重新进入终端),再用 acme.sh --version 确认安装成功——能看到版本号输出就说明装好了。

接着把 acme.sh 的默认 CA 切换为 Let’s Encrypt:

acme.sh --set-default-ca --server letsencrypt

第二步:在面板里创建 IP 站点

在宝塔面板中新建一个站点,域名一栏填写服务器的公网 IP 地址,其他选项按需配置,完成后点「确定」。后续签发证书时,--webroot 目录要指向这个 IP 站点对应的目录(例如 /www/wwwroot/114.132.47.153/)。

在宝塔面板新建站点,域名填写服务器公网 IP 地址

第三步:签发 IP 证书

在终端执行下面的命令申请 IP 证书,把 YOUR_IP_ADDRESS 换成你的服务器公网 IP:

acme.sh --issue --cert-profile shortlived --days 3 -d YOUR_IP_ADDRESS --webroot /www/wwwroot/YOUR_IP_ADDRESS/

例如公网 IP 是 114.132.47.153 时,命令写成:

acme.sh --issue --cert-profile shortlived --days 3 -d 114.132.47.153 --webroot /www/wwwroot/114.132.47.153/

用 acme.sh 签发基于公网 IP 地址的 Let’s Encrypt 证书

第四步:把证书部署到面板

证书签发成功后,执行下面的命令把证书写入面板 SSL 配置:

acme.sh --install-cert -d YOUR_IP_ADDRESS \
--key-file /www/server/panel/ssl/privateKey.pem \
--fullchain-file /www/server/panel/ssl/certificate.pem \
--reloadcmd "service bt restart"

同样把 YOUR_IP_ADDRESS 换成你的公网 IP。命令里的 --reloadcmd "service bt restart" 会在证书更新后自动重启宝塔面板服务,让新证书生效。

执行这条部署命令时,请用独立的 SSH 终端窗口,不要用面板终端——因为命令会重启面板服务,面板终端会随之断开,导致操作中断。

部署前先确认面板已经开启「面板 SSL」功能(新安装的面板通常已默认开启),开启位置见宝塔面板 SSL 配置。

部署完成后,面板就换上了浏览器可信的 IP 证书:

宝塔面板 SSL 证书部署成功后的效果

常见问题

为什么访问宝塔面板的 HTTPS 会提示「证书不受信任」?

因为面板默认使用的是宝塔自签名证书。这种证书能加密传输,但没被浏览器和操作系统的信任根收录,所以浏览器会提示「证书不受信任」「连接不安全」。

没有域名,能给面板配上受信任的 HTTPS 证书吗?

可以。Let's Encrypt 已经支持签发基于 IP 地址(无需域名)的免费 HTTPS 证书,用 acme.sh 即可申请并部署到宝塔面板。

这个 IP 证书有效期多久?会过期吗?

Let's Encrypt 签发的 IP 证书有效期最长只有 160 小时(约 7 天),有效期较短。acme.sh 安装后会自动处理续签,并在证书更新后通过部署命令里的 reload 参数重启面板使新证书生效。

部署证书时为什么不能用面板终端执行?

部署命令带 `--reloadcmd "service bt restart"`,会重启宝塔面板服务。如果在面板终端里执行,面板一重启当前终端连接就会被中断,所以要改用独立的 SSH 终端窗口。

签发 IP 证书前要确认哪些前置条件?

先确认面板已经开启「面板 SSL」功能(新安装的面板通常已默认开启),再在面板里创建一个域名填公网 IP 的站点,签发命令里的 `--webroot` 目录要指向这个站点目录。

以后官方会支持直接在面板里申请 IP 证书吗?

官方文档提到面板后续会支持从面板直接申请 Let's Encrypt IP 证书;在此之前如果动手能力一般,也可以等官方功能发布。