受信任根中的 Windows 自签名证书在 Chrome 106 中无效

Mat*_*ler 7 google-chrome .net-core self-signed-certificate

我正在使用 powershell New-SelfSignedCertificate 创建证书并导入到 .netcore 项目的受信任根中。

它一直运行良好,但最近停止了,证书要到 2024 年才会过期。

我使用的是 Chrome 106。

关于它为什么会停止以及如何修复有什么想法吗?

Sta*_*rev 5

是的,Chrome 推出了自己的证书根存储区。他们说这种情况早在 Chrome 105 中就发生过,但自 Chrome 106 以来我们才开始在企业环境中遇到问题。

\n

在 Windows 上,您可以通过注册表禁用此新功能:

\n
    \n
  1. 创建 REG_DWORD 值ChromeRootStoreEnabled在 HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Google\\Chrome 中
  2. \n
  3. 重新启动 Chrome
  4. \n
\n

摘自chromeenterprise。但请不要忘记,在不了解自己所做的事情的情况下禁用此功能可能会带来安全风险 - 在这种情况下,这不是一个大风险,但无论如何。

\n

该文档实际上指出新的根存储区考虑了本地受信任的证书:

\n
\n

Chrome 证书验证程序在证书验证过程中会考虑本地管理的证书。这意味着,如果企业将根 CA 证书分发给其用户(例如,通过 Windows 组策略对象),则该证书在 Chrome 中将被视为受信任。

\n
\n

我们使用自己的CA在企业环境上签署测试网站HTTPS证书。所以我们看起来一定没有受到影响。但即使开发团队中的每个人都将我们的 CA 安装在受信任的根目录中 - 我们仍然面临这个问题。我不确定这是否是一个错误,或者我们还需要了解哪些 CA 被接受、哪些不被接受。

\n
\n

更新2022年10月24日

\n

我发现除了我们团队的CA之外,还有另一个本地企业CA。Chrome 接受该 CA 颁发的 \xd0\xa1 证书,而无需禁用新的根存储 - 因此 Chrome 显然不会忽略本地受信任的证书。

\n

经过一番尝试和错误后,我发现问题不在于 CA 证书,而在于端点 CA 签名证书。现已被拒绝的旧测试证书包含以下属性:

\n
    \n
  • Basic Constraints:主题 = 不是 CA,路径长度 = 0
  • \n
  • Key Usage:数字\xc2\xa0签名,密钥\xc2\xa0加密
  • \n
  • Extended Key Usage:TLS 服务器、TLS 客户端 + 9 个内部自定义 OID
  • \n
  • Subject Alternative Name: localhost + 大约 30 个测试网站各个域中的 DNS 名称
  • \n
\n

删除该Basic Constraints属性使 Chrome 最终接受了证书。

\n

因此,除了新的根存储之外,证书验证程序还发生了更多变化。到目前为止,我还没有找到任何关于它们到底改变了什么的文档。AFAIK即使在非 CA 证书中也是Basic Constraints一个绝对好的属性,所以对我来说它看起来像是 Chrome 中的一个错误。

\n