OS X 是否支持证书上的 X.509 nameConstraints?

信息安全 证书 苹果系统 铬合金 x.509
2021-08-21 16:36:02

我现在在测试机器上有以下证书“链”:

  • 自签名 CA 证书,在我的钥匙串中,受 Firefox 信任和信任。
  • 具有以下内容的 CA 证书,

    X509v3 Name Constraints: critical
      Permitted:
        DNS:mydomain.net
        DNS:.mydomain.net
    
  • 由上述人员签署的非 CA 证书。

测试网络服务器为后两个证书提供服务;第一个在 OS X 的 Keychain、Firefox 本身以及我的 Linux 端,也在 FF 和 by 中标记为“受信任” certutil

在 OS X 上,Firefox 认为连接是安全的;Chrome 和 Safari 没有。看起来 Chrome 和 Safari 只是使用操作系统用于加密目的的任何东西,所以在这里,OS X 是问题所在。查看证书显示:

"This certificate cannot be used (unrecognized critical extension)"

Extension: Name Constraints (2.5.29.30)
 Critical: YES
     Data: <a sequence of octets>

我猜是因为我看到的是一个八位字节序列,而不是一个很好的解码视图(就像我对其他扩展所做的那样),这是导致错误的扩展。

我无法让它在 Chrome 下的 Linux 上运行(再次在 FF 中运行良好);但是,在那里,它似乎无法找到根证书(而在 OS X 上却可以);我认为这是因为我不明白如何接受我的自签名证书。(互联网上说certutil,我已经尝试了几乎所有的组合都无济于事。)

2个回答

是的,OS X / macOS 自 10.13.3 起支持此功能。

根据https://nameconstraints.bettertls.com存档的测试,10.13 未通过一些测试,但 10.13.3 通过SafariChrome全部通过。

这适合macOS 10.13.3 的时间线发行说明,其中列出了以下修复1

描述:处理名称限制时存在证书评估问题。此问题已通过改进证书的信任评估得到解决。

至少从版本 50 开始使用它自己的内部 TLS 通道的 Firefox

这也符合lxgr 关于它在 10.15.4评论和我今天在 10.14.6 上的测试的评论


1正如 Joe Lee-Moyet 在评论中指出的那样

#不。苹果不支持这个。

Apple 的安全传输库不支持 X.509 的nameConstraints.

Chromium 的错误数据库中有一个关于此的错误。它已被关闭为WontFix. 开发人员Ryan Sleevi 在 2014 年 8 月 25 日曾这样说(在此处存档):

Chrome 遵循操作系统加密堆栈进行验证。

Apple 没有实施名称限制是一个众所周知的长期问题。这适用于所有使用 OS X 的 SSL 或证书验证库的应用程序(例如 Safari、Curl、Python 等)

#有关的