宝塔面板Let's Encrypt证书失败主因是域名解析或服务器连通性问题,需确认A记录生效、80端口开放、无残留.well-known文件;自动续签需同时启用定时任务和勾选“强制HTTPS”;泛域名须用acme.sh手动DNS验证;HTTPS后打不开多因混合内容,需统一页面内链为https://或//。

宝塔面板申请 Let's Encrypt 证书失败:常见报错和前置条件
直接卡在“验证失败”或提示 dns unauthorized、connection refused,大概率不是证书本身的问题,而是域名解析或服务器连通性没到位。
必须确认三点:
— 域名已正确解析到当前服务器 IP(A 记录),且 TTL 已生效(可 dig example.com +short 验证);
— 服务器 80 端口对外开放(宝塔防火墙 + 云厂商安全组都要放行);
— 网站根目录下不能存在 .well-known 手动创建的残留文件,Let’s Encrypt 会自己写入,冲突会导致验证中断。
“自动续签失败”背后的两个隐藏开关
宝塔默认开启自动续签,但实际生效要同时满足两个条件:定时任务没被禁用,且网站配置里勾了“强制 HTTPS”。漏掉任意一个,证书到期后就只会静默失效,浏览器突然报 NET::ERR_CERT_DATE_INVALID。
- 检查定时任务:进「计划任务」→ 找到名为
Let's Encrypt SSL Certificate Renewal的任务,状态必须是“启用” - 检查网站设置:点开对应站点 →「SSL」→ 确保勾选了
强制 HTTPS(它不只跳转,还触发续签逻辑) - 手动测试续签:在证书列表点「续签」,观察日志里是否出现
renewed successfully,别只看界面按钮变绿
泛域名证书(*.example.com)在宝塔里走不通?
宝塔面板 UI 上的 Let's Encrypt 申请入口不支持 DNS-01 挑战,而泛域名必须走 DNS 验证。想用泛域名,就得绕过面板,手动操作。
可行路径只有一条:
— 在服务器终端执行 acme.sh --issue -d example.com -d *.example.com --dns dns_ali(以阿里云 DNS 为例)
— 成功后把生成的 fullchain.cer 和 example.com.key 文件路径填回宝塔「SSL」→「其他证书」里
— 注意:acme.sh 必须提前配置好 API 密钥,且域名 DNS 服务商得在 acme.sh 支持列表中
HTTPS 启用后网站打不开或资源加载失败
这不是证书问题,是混合内容(Mixed Content)作祟。浏览器看到页面里有 http:// 的图片、JS 或 CSS,会直接拦截,控制台报 Mixed Content: The page at 'https://...' was loaded over HTTPS。
修复方式很直接:
— 进网站根目录,搜索所有 http:// 开头的静态链接,改成 // 或 https://
— WordPress 类站点,进「设置」→「常规」,把「WordPress 地址(URL)」和「站点地址(URL)」都改成 https:// 开头
— 宝塔自带的「强制 HTTPS」只管跳转,不管页面内链,这点容易忽略


















