登录
首页 >  文章 >  php教程

宝塔面板SSL证书申请失败解决方法

时间:2026-03-31 08:09:24 434浏览 收藏

当宝塔面板申请Let's Encrypt SSL证书频繁失败(如连接超时、验证失败)时,根本原因多为国内网络访问境外CA节点受阻或本地环境兼容性问题;本文提供一套系统化解决方案:优先切换至专为国内优化的LiteSSL证书服务,辅以禁用IPv6优先解析、手动检测ACME接口连通性、彻底清除acme缓存与旧配置、修复pyOpenSSL签名兼容性缺陷,五步操作即可高效绕过网络限制与软件冲突,让SSL证书申请重回正轨——无需翻墙、不改业务架构,真正实现开箱即用的安全加密部署。

宝塔面板无法申请免费SSL证书?解决宝塔面板Let\'s Encrypt申请超时

如果您在宝塔面板中尝试申请 Let's Encrypt 免费 SSL 证书,但反复提示连接超时或验证失败,则很可能是由于服务器无法访问 Let's Encrypt 境外验证节点所致。以下是解决此问题的步骤:

一、更换为国内证书服务商(LiteSSL)

Let's Encrypt 服务节点位于境外,国内服务器常因网络策略导致连接超时;LiteSSL 是专为国内环境优化的免费 CA,所有验证均通过国内节点完成,彻底规避境外网络不可达问题。

1、登录宝塔面板,进入「网站」→ 选择目标站点 → 点击「SSL」选项卡。

2、在证书申请区域,将「证书服务商」下拉菜单由默认的 Let's Encrypt 改为 LiteSSL

3、保持「验证方式」为「DNS 验证」,避免依赖 80/443 端口及网站根目录配置。

4、点击「申请」按钮,系统将自动调用 DNS API 完成域名所有权验证。

二、修复 IPv6 优先导致的连接失败

部分系统默认启用 IPv6 且优先解析 AAAA 记录,而 Let's Encrypt 的 IPv6 地址(如 2606:4700::)在国内多数环境下不可达,强制触发 Network is unreachable 错误。

1、执行命令临时禁用 IPv6 连接优先级:echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf

2、验证修改是否生效:运行 getent ahosts acme-v02.api.letsencrypt.org | head -n1,确认返回结果为 IPv4 地址。

3、若需永久生效,确保该行已写入 /etc/gai.conf 文件末尾,且无重复项。

三、手动验证 Let's Encrypt 节点连通性

申请前需确认服务器可直连 Let's Encrypt ACME 接口,否则所有自动流程均会因底层连接失败而中断。

1、执行测试命令:curl -I https://acme-v02.api.letsencrypt.org/directory

2、若返回 HTTP 200 响应头,说明网络可达;若出现 Connection timed out 或 Failed to connect,则需检查防火墙、代理或运营商拦截策略。

3、如确认超时,可在服务器上临时设置代理(仅限调试):export https_proxy=http://127.0.0.1:1080,再重试 curl 命令。

四、清除 ACME 缓存与旧证书残留

宝塔面板的 ACME 客户端会缓存失败的验证状态及过期密钥材料,残留文件可能干扰新申请流程,尤其在多次失败后。

1、删除 ACME 配置缓存目录:rm -rf /www/server/panel/vhost/acme

2、清除 Let's Encrypt 本地账户信息:rm -f /www/server/panel/vhost/letsencrypt.json

3、重启宝塔面板使变更生效:bt restart

五、修正 OpenSSL 模块签名异常

部分系统中 pyOpenSSL 版本与底层 OpenSSL 库不兼容,导致 sign 函数缺失,引发“module ‘OpenSSL.crypto’ has no attribute ‘sign’”错误,直接阻断证书签名环节。

1、定位并编辑 ACME 核心脚本:vi /www/server/panel/class/acme_v2.py

2、搜索关键词 x509req.set_version(2),将其替换为 x509req.set_version(0)

3、保存文件后,执行 bt 14 清除面板缓存,并重启面板服务。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>