宝塔关于部分服务器无法获取 Let's Encrypt 证书的解决方法
在宝塔面板中申请 Let’s Encrypt SSL证书 时,有时会遇到 “无法获取证书”、“域名验证失败”等错误。这个问题通常与网络连接、防火墙设置、域名解析或服务器时间配置有关。
以下是常见原因及对应的解决方案:
如果你仍然遇到困难,建议结合证书申请日志进一步分析,或联系宝塔官方支持寻求帮助。
以下是常见原因及对应的解决方案:
一、常见问题及对应解决方法
问题类型 | 描述 | 解决方案 |
---|---|---|
1. 域名无法通过 HTTP 验证(http-01) | 宝塔默认使用文件验证方式,要求网站能正常访问 .well-known 目录 |
确保网站正常运行,且未设置防盗链或限制访问该目录 |
2. DNS解析异常 | 域名未正确解析到服务器IP | 检查域名A记录是否指向当前服务器公网IP |
3. 网络被墙或API访问受限 | Let's Encrypt 的 acme-v02.api.letsencrypt.org 无法访问 | 更换DNS为 8.8.8.8 或使用代理;尝试使用 DNS 验证方式 |
4. 服务器时间不一致 | 时间偏差超过5分钟将导致证书申请失败 | 使用 ntpdate 或 timedatectl 校准系统时间 |
5. 请求频率超限 | Let's Encrypt 对同一域名短时间内重复申请有频率限制 | 等待一段时间再试,避免频繁申请 |
6. 宝塔版本过低或脚本异常 | 老版本存在兼容性问题 | 升级宝塔至最新稳定版 |
二、详细排查与修复步骤
✅ 步骤 1:检查域名是否已正确解析
- 执行命令:
bash
ping yourdomain.com
- 查看返回的 IP 是否与你的服务器公网 IP 一致
- 如果不一致,请前往域名服务商后台修改 A 记录,指向服务器 IP
✅ 步骤 2:确认网站可以正常访问验证路径
Let's Encrypt 默认使用 http-01 验证方式,需确保以下条件成立:- 网站运行状态为“运行中”
- 可以访问
http://yourdomain.com/.well-known/acme-challenge/
(可能会出现403或404,但不能是连接失败) - 没有重定向规则影响验证请求
✅ 步骤 3:校对服务器时间
Let's Encrypt 对服务器时间非常敏感,时间误差超过5分钟会导致验证失败。- 查看当前系统时间:
bash
date
- 同步时间(以CentOS为例):
bash
yum install -y ntp ntpdate pool.ntp.org
- Ubuntu/Debian:
bash
apt update && apt install -y ntp ntpdate pool.ntp.org
✅ 步骤 4:更换验证方式为 DNS 验证(推荐)
如果 HTTP 方式始终失败,可改用 DNS API 验证方式,适用于以下情况:- 网站无法公开访问
- 被 CDN 或反代拦截
- 服务器处于中国境内,无法访问 Let's Encrypt API
操作步骤如下:
- 登录宝塔面板
- 进入【网站】 → 【SSL】选项卡
- 点击【Let's Encrypt】 → 【申请】按钮
- 在弹出窗口中选择:
- DNS API验证
- 选择你使用的域名服务商(如阿里云、腾讯云、Cloudflare等)
- 输入相应的 API 密钥和密钥 ID(可在域名平台获取)
- 提交后宝塔将通过 DNS 添加 TXT 记录完成验证
⚠️ 注意:需要你提前在域名服务商后台开通 API 权限并获取 AccessKey
三、其他建议
- 使用纯净站点测试证书申请:新建一个空站点绑定域名进行测试,排除程序干扰
- 查看证书申请日志:
- 日志路径:
/www/wwwlogs/letsencrypt.log
- 可用于分析具体失败原因
- 日志路径:
- 升级acme.sh脚本(进阶用户):
- 宝塔使用的是旧版 acme.sh,你可以手动升级为最新版本提升兼容性
四、总结
部分服务器无法成功获取 Let's Encrypt 证书,主要原因是网络连通性问题、DNS解析异常、时间不同步或验证方式受阻。通过检查域名解析、校正系统时间、关闭CDN并使用 DNS API 验证等方式,基本可以解决大部分问题。如果你仍然遇到困难,建议结合证书申请日志进一步分析,或联系宝塔官方支持寻求帮助。
更新时间:2025-05-15 11:07:56