最近在折腾便宜VPS的时候,发现不少朋友在使用LegendVPS这类机器部署环境时,经常遇到一个“拦路虎”:不管怎么折腾,SSL证书就是申请不下来,要么提示连接超时,要么报错验证失败。这往往是LetsEncrypt的ACME协议握手出了问题。

如果你的站点因为缺少小绿锁而被浏览器标记为“不安全”,或者在使用Certbot、Acme.sh等工具时频频碰壁,别急着怪机器太差,很可能是某个网络环节被掐断了。今天就来聊聊这个问题的排查思路,手把手教你解决“连不上LetsEncrypt”的困扰。

1. 检查基础网络连通性

首先,最直观的原因就是你的机器到LetsEncrypt验证服务器(通常是acme-v02.api.letsencrypt.org)的路由不通。LetsEncrypt的服务器主要部署在海外,如果你的VPS网络质量一般,或者被QOS限速了,很容易导致握手超时。

排查命令: 在SSH终端执行以下命令,测试是否能够连通验证服务器:

curl -I https://acme-v02.api.letsencrypt.org

如果迟迟没有响应,或者出现Connection timed out,说明存在网络阻断。这时候可以尝试更换DNS服务器(如8.8.8.8),或者开启Warp等科学上网工具为服务器加速。

2. 防火墙与安全组设置最容易被忽视

这是新手最容易中招的地方。LetsEncrypt在验证服务器所有权时,通常需要访问你的80端口(HTTP-01挑战)或443端口(TLS-ALPN-01挑战)。如果这两个端口没有对外开放,或者被系统内部的防火墙(如iptables, firewalld, ufw)拦截,那验证铁定失败。

解决步骤:

  • 检查云服务商后台: 确保安全组的入站规则中,TCP 80和TCP 443端口已经放行,允许来源IP为0.0.0.0/0。
  • 检查系统防火墙:
    • 如果是Ubuntu系统(使用UFW):
      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      sudo ufw reload
      
    • 如果是CentOS系统(使用Firewalld):
      sudo firewall-cmd --permanent --add-service=http
      sudo firewall-cmd --permanent --add-service=https
      sudo firewall-cmd --reload
      

3. Web服务器配置冲突

如果你已经搭建了Nginx或Apache,并且配置了强制HTTPS跳转,可能会导致Let's Encrypt无法通过80端口完成验证。因为验证过程第一步是访问http://你的域名/.well-known/acme-challenge/xxx,如果你的服务直接把HTTP请求301重定向到了HTTPS,而443端口配置又不支持该路径,验证就会失败。

排查建议:

  • 临时关闭HTTPS强制跳转配置。
  • 或者在Web服务器配置中,为/.well-known/acme-challenge/路径单独配置一个location,确保它不发生重定向,直接返回验证文件。

4. 系统时间不同步是大忌

SSL协议极其依赖时间的准确性。如果你的VPS系统时间与标准时间相差太大(超过几分钟),CA机构会认为你的请求存在重放攻击风险,从而直接拒绝连接。

修复方法: 安装并同步时间服务:

# 安装NTP
centOS: yum install ntp -y
ubuntu: apt install ntp -y

# 立即同步
ntpdate -u time.nist.gov

建议开启Cron任务定期同步时间,防止漂移。

5. 尝试更换DNS验证模式

如果80端口被运营商封杀(特别是某些国内云机器的入门带宽),或者上面的问题依然无法解决,可以彻底绕过端口问题,改用DNS验证模式。这种方式需要你在DNS服务商处添加一条TXT记录来证明域名所有权。

  • Acme.sh users: 加上 --dns 参数即可,配合 --dnsdns 或具体的DNS API(如Cloudflare API)可实现全自动。
  • Certbot users: 使用 certbot certonly --manual --preferred-challenges dns 按提示手动添加DNS记录。

这种方式虽然配置稍微繁琐一点,但成功率极高,尤其适合网络环境复杂的VPS。

总结

遇到LegendVPS连不上LetsEncrypt,不要慌,按照“查网络 -> 放端口 -> 改配置 -> 对时间”的顺序排查,90%的问题都能搞定。对于网络实在差劲的机器,直接上DNS验证模式是“终极杀招”。希望这篇排查指南能帮你的站点早日挂上小绿锁!

标签: none

评论已关闭