首页 > 解决方案 > 检查 X509Certificate2 是否适用于 Google Chrome 和 Mozilla Firefox 中的 http/2

问题描述

我们正在运行一个通过 Kestrel 提供 Web api 的 Dotnet Core 3.0 应用程序。默认情况下,Kestrel 已将可用协议设置为Protocols.Http1AndHttp2.

在我们的一台测试机器上,结果表明 http/2 不能与 Google Chrome (77.0.3865.90) 结合使用。浏览器显示错误ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY消息。在这种情况下,回退到 http1 不起作用,因为浏览器通常支持 http/2。微软边缘顺便说一句。确实支持通过 http/2 请求相同的端点。

我在我的开发机器上测试了证书,结果证明它按预期工作。因此,证书本身而不是托管应用程序的服务器似乎不是问题。我的本地机器正在运行 Windows 10 Pro (1903)。服务器正在运行 Windows Server 2012 R2 Datacenter (6.3.9600)。

该应用程序将作为自包含包托管在我们的客户服务器上,我们不会影响api 将运行哪些服务器。

我们不想完全禁用 http/2,而是想检查是否所有浏览器都会接受提供的证书以及 http/2 的组合。我不确定如何在服务器端找到它。对我们来说,提供的密码套件似乎是某种问题,但我不知道如何检查服务器端的兼容性。

有谁知道如何检查兼容性?

标签: encryption.net-corehttp2x509certificate2kestrel-http-server

解决方案


这不是证书,而是密码套件。

通过此工具运行您的站点:https ://www.ssllabs.com/ssltest/ (或下载并使用https://testssl.sh,如果不是公开的,内部站点),您将看到已配置的密码套件。

HTTP/2 将旧密码列入黑名单,如果已配置,Chrome 将不会使用 HTTP/2。列表在这里:https ://www.rfc-editor.org/rfc/rfc7540#appendix-A但基本上你可能应该为 Chrome 使用 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。

这篇文章告诉您如何为 IIS 更改它们:https ://medium.com/@rootsecdev/configuring-secure-cipher-suites-in-windows-server-2019-iis-7d1ff1ffe5ea


推荐阅读