我的知识记录

宝塔关于部分服务器无法获取 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
操作步骤如下:
  1. 登录宝塔面板
  2. 进入【网站】 → 【SSL】选项卡
  3. 点击【Let's Encrypt】 → 【申请】按钮
  4. 在弹出窗口中选择:
    • DNS API验证
    • 选择你使用的域名服务商(如阿里云、腾讯云、Cloudflare等)
  5. 输入相应的 API 密钥和密钥 ID(可在域名平台获取)
  6. 提交后宝塔将通过 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

上一篇:宝塔如何关闭HTTPS强制跳转,实现HTTP/HTTPS共存?

下一篇:宝塔如何设置让HTTP请求自动跳转到HTTPS?