encryption - 检查 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 的组合。我不确定如何在服务器端找到它。对我们来说,提供的密码套件似乎是某种问题,但我不知道如何检查服务器端的兼容性。
有谁知道如何检查兼容性?
解决方案
这不是证书,而是密码套件。
通过此工具运行您的站点: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
推荐阅读
- swift - 当用户开始驾驶时获得通知 (CoreMotion)
- javascript - 如何确定mongodb中哪个查询行不匹配
- c++ - 关于视图矩阵和截锥体剔除
- linux - 如何创建可以与普通 bash 命令结合使用的“字符串”别名?
- reporting-services - Microsoft SSRS 中的分页符
- javascript - 自定义光标上的背景过滤器?
- plot - 散景如何使列数据源列使用第二个 Y 轴进行显示
- mongodb - 在 mongodb 查询期间加载嵌套虚拟
- awk - 如何打印用户指定的字段
- solidity - 在solidity中,函数签名是否考虑了数据位置?