You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

win-acme网络路径填写规范及http-01认证失败问题求助

win-acme http-01验证失败问题解决指南

一、win-acme网络路径填写标准

  • 必须填写Node.js服务实际用于响应静态文件请求的本地磁盘路径,而非项目代码根目录或网络共享路径。
  • 路径需对应到能让Node.js正确映射/.well-known/acme-challenge/请求的目录,比如你在代码中配置的静态文件目录(如C:\node-project\public),或专门为ACME验证创建的C:\node-project\.well-known\acme-challenge目录。
  • 确保运行win-acme的用户(如管理员)拥有该目录的读写权限。

二、问题解决步骤

1. 修复Node.js静态文件路由配置

无论使用Express还是其他Node.js框架,必须确保服务能处理/.well-known/acme-challenge/路径的请求:

  • 示例(Express框架):
    const express = require('express');
    const path = require('path');
    const app = express();
    
    // 专门映射ACME验证路径
    app.use('/.well-known/acme-challenge', express.static(path.join(__dirname, '.well-known/acme-challenge')));
    
    // 其他业务路由...
    app.listen(8080, () => console.log('Server running on 8080'));
    
  • 手动验证:在对应目录创建test.txt,访问http://你的域名:8080/.well-known/acme-challenge/test.txt,能看到文件内容才算配置正确。

2. 调整win-acme路径配置

在win-acme的http-01验证(FileSystem模式)中,填写上述Node.js配置的本地磁盘路径,比如C:\node-project\.well-known\acme-challenge。

3. 配置端口转发(关键)

ACME服务器默认访问80端口,而你的Node.js服务运行在8080,需将80端口流量转发到8080:

  • 执行Windows命令:
    netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8080 connectaddress=127.0.0.1
    
  • 验证转发:访问http://你的域名/.well-known/acme-challenge/test.txt(无需加8080),能正常访问则转发生效。

4. 排查验证文件消失问题

  • 检查Node.js服务是否有自动清理脚本、构建工具(如webpack)会删除临时目录文件,临时禁用此类功能。
  • 手动创建.well-known/acme-challenge目录,设置完整读写权限,让win-acme生成验证文件后,先手动检查文件是否存在,再进行验证。

5. 调整Cloudflare设置

  • 进入Cloudflare域名管理,设置.well-known/acme-challenge路径为绕过缓存(避免ACME服务器拿到缓存的404响应)。
  • 检查Cloudflare防火墙规则,临时禁用可能拦截ACME请求的规则,或添加Let's Encrypt的ACME服务器IP范围到白名单。

内容的提问来源于stack exchange,提问作者angryduck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:13:15