完美解决:当宝塔面板遇上Cloudflare,Let’s Encrypt证书续签失败怎么办?
你是否也遇到了这样的烦恼:网站使用了强大的 Cloudflare WAF 进行安全防护,服务器则通过宝塔面板轻松管理,并使用免费的 Let’s Encrypt 证书。一切看起来都很完美,直到某天你发现,SSL 证书的自动续签悄悄地失败了。手动续签,还是一样的报错!
别担心,这不是什么大问题。这通常是因为 Cloudflare 过于“尽职”的安全规则,无意中拦截了 Let’s Encrypt 验证服务器的正常请求。
本文将手把手教你如何通过一条简单的防火墙规则,一劳永逸地解决这个问题,让你同时享受 Cloudflare 的安全与 Let’s Encrypt 的便捷。
一、问题诊断:谁是“罪魁祸首”?
Let’s Encrypt 续签证书需要通过它的服务器来访问你网站上的一个特定验证文件(通常位于 /.well-known/acme-challenge/ 目录下)。这个过程是自动化的,验证服务器就像一个机器人。
而 Cloudflare 的 WAF 防火墙规则,尤其是那些带有 “托管质询 (Managed Challenge)” 或 “阻止 (Block)” 操作的规则,会要求访问者进行真人验证(如回答验证码或通过JS检测),机器人自然无法通过。
登录你的 Cloudflare 仪表板,检查 安全 (Security) -> WAF -> 防火墙规则 (Firewall rules)。你很可能会发现类似下面这些规则的活动计数非常高:
- Challenge Direct Access (质询直接访问):Let’s Encrypt 服务器没有来源(Referer),属于直接访问,极易触发。
- Challenge Dangerous Countries (质询危险国家):如果验证服务器的 IP 恰好在你的列表中,也会被拦截。
- Bad IP Scoring (阻止不良IP):一些共享 IP 可能被标记,导致请求被直接阻止。
二、解决方案:为 Let’s Encrypt 开辟一条VIP通道
我们的目标不是关闭安全规则,而是在所有规则之前,为 Let’s Encrypt 的验证请求设置一个“白名单”,让它跳过所有检查。
操作步骤:
-
在 Cloudflare 的 防火墙规则 (Firewall rules) 页面,点击蓝色的 “+ 创建规则” 按钮。
-
填写规则详情:
- 规则名称 (Rule name):取一个清晰易懂的名字,例如
Allow Let's Encrypt。 - 当传入请求匹配时… (When incoming requests match…)
- 字段 (Field):选择 URI 路径 (URI Path)
- 运算符 (Operator):选择 包含 (contains)
- 值 (Value):输入
/acme-challenge
- 然后采取措施… (Then take action…)
- 选择操作 (Choose an action):选择 跳过 (Skip)
- 要跳过的 WAF 组件 (WAF components to skip):务必勾选所有选项! 这一步至关重要,它确保了后续的所有自定义规则、速率限制等都不会对这个请求生效。
- [✓] 所有其余自定义规则
- [✓] 所有速率限制规则
- [✓] 所有托管规则
- [✓] 所有超级自动程序攻击模式规则

- 规则名称 (Rule name):取一个清晰易懂的名字,例如
-
部署并调整优先级:
- 点击 部署 (Deploy) 按钮保存规则。
- 回到规则列表,最重要的一步:用鼠标按住新规则左侧的
::图标,将它拖动到列表的最顶端,确保它的顺序是第一位! - 防火墙规则是按顺序执行的,必须让这条放行规则第一个执行,否则请求还是会被前面的规则拦截。
三、安全答疑:这样做安全吗?
你可能会担心,这样做会不会留下安全漏洞?答案是:非常安全,请完全放心。
- 作用范围极小:该规则仅对 URL 中包含
/acme-challenge的请求生效。这是 Let’s Encrypt 专用的验证路径,普通访客和黑客攻击几乎不会触及。 - 不影响网站主体安全:你网站的所有其他页面(首页、后台、API等)依然会受到你后续所有安全规则的严密保护。
- 不会暴露服务器真实IP:此规则在 Cloudflare 的边缘节点执行,仅仅是改变了 Cloudflare 处理特定请求的方式,流量依然经过 Cloudflare 代理,你的源站 IP 仍然是隐藏和受保护的。
四、最后一步:享受自动化
设置完成后,回到你的宝塔面板,再次点击续签证书,这次应该会立刻成功。
更重要的是,请保持这条规则永久启用。这样,宝塔面板的自动续签任务就能在后台顺利运行,你再也无需为证书过期而烦恼,真正实现“一次设置,高枕无忧”。
希望这篇教程能帮助到遇到同样问题的朋友们!