【问题标题】:Check if X509Certificate2 will work with http/2 in Google Chrome an Mozilla Firefox检查 X509Certificate2 是否适用于 Google Chrome 和 Mozilla Firefox 中的 http/2
【发布时间】:2020-02-05 11:51:35
【问题描述】:

我们正在运行一个通过 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-core http2 x509certificate2 kestrel-http-server


    【解决方案1】:

    不是证书而是密码套件。

    通过此工具运行您的网站: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

    【讨论】:

    • 谢谢你,巴里。知道这是关于密码套件的问题是现在迈出的一大步。由于应用程序是通过 Kestrel 运行的,因此配置 IIS 并不能解决问题。除此之外,该软件在我们客户的服务器上运行,因此我们不会对全球密码套件产生影响。我现在正在寻找一种方法来识别提供的密码套件并将它们与黑名单进行核对。目的是在有可用的黑名单套件时禁用 HTTP/2。对此有任何想法吗?我已经在我的项目中使用 BouncyCastle,但找不到任何有用的东西。
    猜你喜欢
    • 2016-11-24
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多