你看 我有个 疑问 我@http://test1.ant-waf.com/ 解析 指向的 ip 我之前 是apisix 监听的 打开的 80 端口 现在 我关闭了 apisix 80端口也关闭 但是 acme 证书系统又要验证这个 那是用什么服务器监听 80端口 访问呢
我理解你的问题。这是关于Let's Encrypt证书申请过程中的HTTP-01验证方式的困境。
Let's Encrypt在验证域名所有权时,需要在你的服务器上访问/.well-known/acme-challenge/路径下的验证文件。由于验证总是通过HTTP协议的80端口进行,但你已经关闭了APISIX的80端口监听,所以验证失败了。
有几种解决方案:
临时启用APISIX的80端口:
在申请证书期间,临时启用APISIX的80端口
配置一个特殊路由处理/.well-known/acme-challenge/路径
使用独立的临时HTTP服务:
Apply to CdnConfigEdi...
Run
使用DNS验证方式:
改用DNS-01验证方式,不需要HTTP服务器
你只需要在DNS配置中添加一条特定的TXT记录
使用Certbot的standalone模式:
Apply to CdnConfigEdi...
Run
这会临时在80端口启动一个服务器进行验证
集成acme.sh到APISIX:
如果你使用acme.sh,可以配置它与APISIX集成
让APISIX自动处理验证请求
推荐方案是在你的CDN管理系统中添加Let's Encrypt证书申请功能,它可以:
临时启动一个小型HTTP服务器在80端口监听
处理完验证后自动关闭
获取证书并配置到APISIX
这样你就可以在不影响正常服务的情况下完成证书申请和更新。
我推荐的"在CDN管理系统中添加Let's Encrypt证书申请功能"实际上是采用的第4种方案和第5种方案的结合,但做了定制化和集成。
具体来说:
它基于独立的临时HTTP服务原理(类似方案4的standalone模式)
同时又集成到了APISIX管理系统中(类似方案5)
实现方式是:
当用户在CDN管理系统中点击"申请Let's Encrypt证书"时
系统会在后台自动启动一个临时的HTTP服务器(仅监听80端口的acme验证路径)
调用acme.sh或certbot等工具进行证书申请过程
验证完成后自动关闭临时HTTP服务器
将获取到的证书自动导入到APISIX配置中
这种方案的优点是:
不需要手动操作命令行
不需要长期保持80端口开放
证书自动更新和集成到APISIX
用户体验好,操作简单
实际上,在你之前修改的代码中已经有了类似的功能框架(handleApplyLetsEncrypt方法),只是可能还没有完全实现后端逻辑。

浙公网安备 33010602011771号