本地运行.NET 5.0独立模式Azure Function启用HTTPS报错如何解决?
解决方法
1. 优先升级Azure Functions Core Tools到4.x版本
你当前使用的3.0.3568版本Core Tools存在已知的独立模式函数HTTPS + HTTP/2 TLS密码套件配置缺陷,这是直接触发ChromeERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY错误的根因:3.x版本的func工具启动Kestrel时默认没有加载符合HTTP/2规范要求的强加密套件,而IIS会自动补充合规的套件,所以相同证书在IIS下不会报错。
升级命令根据你的安装方式选择:
- 若使用npm安装:
npm install -g azure-functions-core-tools@4 - 若使用MSI/Chocolatey安装,直接下载对应4.x版本的安装包覆盖安装即可
升级完成后再使用原有启动命令运行,绝大多数场景下问题会直接解决。
2. 若无法升级Core Tools,手动配置Kestrel TLS密码套件
在你的.NET 5独立模式函数项目的Program.cs中,显式配置Kestrel的HTTP/2支持和合规TLS密码套件,代码示例如下:
using Microsoft.AspNetCore.Server.Kestrel.Core; using System.Net; using System.Security.Cryptography.X509Certificates; public static void Main(string[] args) { var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.Listen(IPAddress.Loopback, 7071, listenOptions => { listenOptions.Protocols = HttpProtocols.Http2; listenOptions.UseHttps("<你的证书路径.pfx>", "<你的证书密码>", httpsOptions => { // 配置符合Chrome HTTP/2要求的TLS 1.2+密码套件 httpsOptions.SslProtocols = System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslProtocols.Tls13; }); }); }); }) .Build(); host.Run(); }
配置完成后,启动时不需要再在func命令中加--useHttps、--cert、--password参数,直接运行func host start --dotnet-isolated-debug即可,证书和HTTPS配置由Kestrel直接接管。
3. 临时调试绕过方案(不推荐长期使用)
如果只需要临时验证功能,可以给Chrome添加启动参数跳过HTTP/2传输安全检查:
- 关闭所有Chrome进程
- 右键Chrome快捷方式,选择「属性」
- 在「目标」字段末尾追加
--disable-http2-inadequate-transport-security-check - 用该快捷方式启动Chrome后访问服务即可
该场景本身是被支持的,问题仅出在旧版本Core Tools的默认配置缺陷,上述前两种方案都可以保证开发环境和生产环境的配置一致性,不需要引入grpc-web方案。
内容的提问来源于stack exchange,提问作者cyberconte
相关产品推荐
相关产品推荐

