服务器封禁海外IP导致无法申请免费SSL证书,是很多宝塔用户都会遇到的问题。这是因为Let's Encrypt(免费证书的签发机构)的验证服务器位于海外,被你服务器的防火墙策略拦截了。
💡 核心原因
下面有几种解决方案,从最推荐的开始:
✅ 方案一:切换验证方式为“DNS验证”(最推荐)
这是最根本、最稳定的解决办法。DNS验证不需要CA服务器访问你的网站,只要求你添加一个DNS解析记录,完全不受服务器“禁海外”策略的影响。
操作步骤:
在宝塔面板“网站”-“SSL”证书申请界面,选择“手动解析”或“DNS验证(支持通配符)”方式。
系统会给出主机记录、记录类型、记录值等信息。
前往你的域名DNS管理后台(如阿里云DNS、腾讯云DNS、Cloudflare等),在域名解析中添加一条对应的TXT记录。
添加后等待几分钟让解析生效,然后回到宝塔面板点击“验证”。
🔧 方案二:临时放行CA服务器IP
如果你希望继续使用“文件验证”的方式,可以临时关闭“禁海外”策略,或者将Let's Encrypt的CA服务器IP加入白名单。
操作思路:
临时关闭:在申请证书的短暂时间内,暂时关闭防火墙“禁海外”的规则,申请成功后再重新开启。
IP加白:找到Let's Encrypt的验证服务器IP(可能会变动),将其添加到防火墙白名单中。但这种方式相对比较麻烦,IP也可能变化。
📥 方案三:使用第三方一键安装证书
如果以上操作都感觉有困难,可以直接用现成的。
购买付费证书:阿里云、腾讯云等国内厂商都有付费DV证书,续费和部署通常在平台内一键完成,但需要付费。
申请云厂商免费证书:阿里云、腾讯云也提供一年期的免费证书。在对应云平台SSL控制台申请并下载(通常是Nginx格式),然后回到宝塔面板手动填写“密钥(KEY)”和“证书(PEM格式)”内容并保存即可。
📌 其他可能导致申请失败的原因
如果证书还是申请不下来,可以顺便排查一下:
系统时间:服务器系统时间不准(误差超过5分钟)会导致证书验证失败。可以在服务器终端输入
date检查,并使用timedatectl set-timezone Asia/Shanghai同步时间。根证书过旧:系统根证书过期也可能导致连接失败。可以尝试在终端执行
update-ca-certificates --verbose --fresh更新一次。
另外提醒一下,Let's Encrypt免费证书有效期只有90天。如果你用方案二(临时放行),记得每三个月都要重复操作一次;如果改用方案一(DNS验证),续签时也只需配置一次,后续很多环境可以自动续签,会更省心。
