宝塔面板HTTPS必须通过「面板SSL」独立开启,自签名证书需手动导入系统根信任库;用acme.sh申请IP证书须配合Webroot模式及正确路径权限,否则导致502或启动失败。

宝塔面板自身的 HTTPS 访问,不能靠网站 SSL 配置实现——那是给站点用的;必须走「面板 SSL」独立开关,且证书路径、格式、权限都有硬性要求。直接在设置里点“开启”最省事,但多数人卡在浏览器报错或重启后失效,问题基本出在证书信任链或文件覆盖方式上。
为什么点「开启面板SSL」后浏览器仍显示不安全?
宝塔生成的自签名证书(baota_root.pem)默认不被系统信任,浏览器会拦截。这不是配置失败,而是正常行为。
- 首次访问
https://你的IP:8888时,必须手动将下载的baota_root.pem导入系统「受信任的根证书颁发机构」,不是「当前用户」 - 导入后要彻底关闭所有浏览器进程(包括后台残留),再重新打开,否则缓存证书策略不会刷新
- Windows 上双击安装时,若误选「个人」存储位置,证书无效;macOS 需用钥匙串访问 → 「系统」钥匙串 → 右键证书 → 「显示简介」→ 「信任」设为「始终信任」
如何用 acme.sh 为公网 IP 申请可信证书并生效?
适用于需要浏览器无警告、又不想绑域名的场景。关键在于 acme.sh 必须用 --webroot 模式配合宝塔已建的 IP 站点,不能用 --standalone(会和面板端口冲突)。
- 先在宝塔「网站」中添加一个站点,域名填你的公网 IP(如
123.123.123.123),根目录设为/www/wwwroot/123.123.123.123 - SSH 中执行:
acme.sh --issue --webroot /www/wwwroot/123.123.123.123 -d 123.123.123.123 - 部署时必须指定面板证书路径:
acme.sh --install-cert -d 123.123.123.123 --key-file /www/server/panel/ssl/privateKey.pem --fullchain-file /www/server/panel/ssl/certificate.pem --reloadcmd "bt restart" -
--reloadcmd不能省,否则证书写入后面板服务没重载,仍用旧证书
手动替换证书文件时最容易踩的三个坑
路径对、文件名对、内容格式对,三者缺一不可。任何一项出错都会导致面板启动失败或 HTTPS 直接 502。
-
/www/server/panel/ssl/下只能有且仅有两个文件:certificate.pem(含完整证书链,顺序是:服务器证书 → 中间证书)、privateKey.pem(RSA 私钥,无密码,开头为-----BEGIN RSA PRIVATE KEY-----) - 私钥文件权限必须是 600,否则面板拒绝读取:
chmod 600 /www/server/panel/ssl/privateKey.pem - 证书内容粘贴时不能带 Windows 换行符(
\r\n),建议用dos2unix处理,或用宝塔文件管理器的「编辑」功能直接粘贴(它会自动清理)
真正麻烦的从来不是生成证书,而是让宝塔进程能稳定读到它、浏览器能稳定信它。每次修改证书后,务必检查 bt status 输出是否为 running,再 curl 一下 https://localhost:8888 看是否返回 200 —— 这比等浏览器提示更早暴露问题。











