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

如何测试LettuceEncrypt示例应用?附域名验证失败报错

解决LettuceEncrypt + ngrok验证失败的问题

问题原因

你遇到的remote error: tls: no application protocol错误,本质是TLS-ALPN挑战无法通过ngrok透传。ngrok免费版会在云端终止TLS连接,不会将TLS握手时的ALPN扩展信息传递到本地应用,导致Let's Encrypt的验证服务器无法完成TLS-ALPN协议的验证流程。

正确测试步骤

改用HTTP-01验证方式(Let's Encrypt支持的另一种域名所有权验证方法),步骤如下:

  1. 修改示例应用配置
    在项目的Program.cs中,调整LettuceEncrypt的配置,强制使用HTTP-01挑战:

    builder.Services.AddLettuceEncrypt()
        .UseHttpChallenge() // 跳过TLS-ALPN,改用HTTP验证
        .RegisterCertificateForDomain("你的ngrok临时域名"); // 替换成ngrok生成的域名
    
  2. 确保应用监听80端口

    • 打开launchSettings.json,将applicationUrl设置为包含http://*:80,比如:
      "applicationUrl": "http://*:80;https://*:443"
      
    • 或者启动应用时添加命令行参数:dotnet run --urls http://*:80
  3. 启动ngrok转发
    运行命令:

    ngrok http 80
    

    复制终端中生成的临时域名(类似t79b-149-167-20-95.ngrok-free.app),替换到步骤1的RegisterCertificateForDomain参数中,重启应用。

  4. 等待验证完成
    应用重启后,LettuceEncrypt会自动向Let's Encrypt发起证书申请,HTTP-01挑战请求会通过ngrok转发到本地应用的80端口,应用会自动处理/.well-known/acme-challenge/路径的验证请求,完成域名所有权验证后生成证书。

额外注意事项

  • ngrok免费版的域名是临时的,每次重启ngrok都会更换,需要重新更新应用配置中的域名。
  • 确保本地防火墙没有拦截80端口的入站请求,ngrok需要能正常访问你的本地应用80端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:46:03