【问题标题】:What are the new requirements for certificates in Chrome?Chrome 中对证书的新要求是什么?
【发布时间】:2023-02-11 01:34:47
【问题描述】:

对于其他浏览器支持的某些证书​​,Chrome 现在会抛出 NET::ERR_CERT_INVALID

我能找到的唯一线索是关于新的 Chrome 根存储的问题列表,它也阻止了企业 CA 安装。

https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md

尤其,

Chrome 证书验证程序将应用标准处理以包括检查:

  • 证书的密钥用法和扩展密钥用法与 TLS 用例一致。
  • 证书有效期不是过去或将来。
  • 密钥大小和算法的质量已知且可接受。
  • 是否包含不匹配或未知的签名算法。
  • 证书没有链接到或通过被阻止的 CA。
  • 符合 RFC 5280。

我验证了我的证书在 Edge 中按预期工作。

此外,我验证了证书是版本“3”,具有 2048 位密钥,并且具有用于服务器身份验证的扩展密钥用法。

我仍然不明白当浏览器只说“无效”时,该证书应该符合哪个“标准”。有没有我可以使用的简单模板或策略?

【问题讨论】:

    标签: google-chrome ssl ssl-certificate


    【解决方案1】:

    Chrome 现在拒绝包含称为 pathLenConstraint 或有时显示为 Path Length Constraint 的变量的 TLS 证书。

    我使用的是 Microsoft Active Directory 证书服务颁发的证书。 Basic Constraints 扩展已启用,AD CS 错误地为最终实体注入 Path length Constraint=0 此配置中的非 CA 证书。

    解决方案是颁发没有基本约束的证书。只要路径长度变量不存在,Chrome 对打开或关闭基本约束都同样满意。

    用于故障排除的更好资源之一是此 Certificate Linter:

    https://crt.sh/lintcert

    它在服务器证书中发现了几个错误,包括路径长度设置为零。

    我还发现了一个讨论各种证书颁发机构的线程,这些证书颁发机构将以相同的方式颁发证书,因此这是一个相当普遍的问题。

    https://github.com/pyca/cryptography/issues/3856

    另一个很好的资源是我作为替代 CA 安装的 smallstep 开源项目。生成通用证书后,无效证书错误消失了,我意识到 Microsoft 和 Google 程序之间发生了一些事情。

    【讨论】:

    • 亲爱的罗伯特,您知道在证书中使用“PathLengthConstraint”限制“子 CA”数量的目的是什么吗?它是否减轻了任何特定的攻击或提高了安全性?
    • @EbrahimGhasemi 如果顶级 CA 与已签名的中间 CA 不由同一方控制(这很不寻常),则可以使用 pathLenConstraint=0 策略来防止中间 CA 签署任何 CA 证书。我怀疑这作为安全功能有多大价值,而且它肯定与最终实体证书的验证无关。谷歌在这里变得如此严格,以至于他们正在破坏合法的证书链。
    【解决方案2】:

    您可以自己做的最好的事情是运行带有调试日志记录的 Chrome,以找到问题的确切原因:

    chrome --enable-logging --v=1

    我相信,这将打印:

    ERROR: Target certificate looks like a CA but does not set all CA properties

    同时,他们似乎已经恢复了此验证,如果我没记错的话,它将在 3 月初作为 Chrome 111 发布。

    见:https://chromium-review.googlesource.com/c/chromium/src/+/4119124

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2013-11-21
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2018-07-29
      相关资源
      最近更新 更多