【问题标题】:Invalid Common Name when using a SAN certificate使用 SAN 证书时公用名无效
【发布时间】:2014-11-16 05:17:29
【问题描述】:

我为内部服务器生成了一个证书,该证书也可以从外部访问。根据this SO 回答 CN 和 SAN 字段相互补充,因此我将 CN 设置为 server.domain.local 并且在 SAN 中我有 DNS:server.domain.tld

但是,至少使用 Chrome,我可以毫无错误地浏览到 server.domain.tld(SAN 条目),但在 server.domain.local (CN) 处出现常见名称不匹配错误

这是 NSS 在 Chrome 上的实现错误还是我做错了什么?我应该在 SAN 字段中同时包含 server.domain.local 和 server.domain.tld 吗?

【问题讨论】:

    标签: ssl certificate ssl-certificate


    【解决方案1】:

    .. CN 和 SAN 字段相互补充..

    这仅适用于一般 PKI 情况,但特定协议具有不同的行为。在 HTTPS 中检查证书的相关 RFC 是 RFC2818(或更高版本的 RFC6125),其中指出:

    If a subjectAltName extension of type dNSName is present, that MUST
    be used as the identity. Otherwise, the (most specific) Common Name
    field in the Subject field of the certificate MUST be used. Although
    the use of the Common Name is existing practice, it is deprecated and
    Certification Authorities are encouraged to use the dNSName instead.
    

    这意味着,如果您有一个 SAN 部分,它必须包含所有名称,因为不会检查 CN。

    【讨论】:

    • 我相信你,因为这就是我正在经历的 IRL,但是其他答案引用的 RFC 5280(第 4.1.2.6 节)呢?
    • RFC5280 仅适用于 PKI 结构。 RFC2818 和 RFC5216 在特定应用协议的上下文中处理证书验证。例如,RFC5280 明确不解决通配符的处理,而 RFC2818 则有。是的,这一切都非常令人困惑:(
    • 您指的是 RFC 6125 而不是 5216?
    • IETF 和 RFC 与此问题无关。 CA 和浏览器在一组不同的策略下发布。如果 Jono 想要很好地使用 Browsers,那么他需要遵守 CA/B BR 和 EV 指南。
    • @jww:虽然我在您提到的指南中找到了有关 CA 颁发和撤销证书的信息,但我没有找到有关在浏览器中实现的验证过程的任何信息。能否请您指出文件的相关部分?
    【解决方案2】:

    CN 和 SAN 字段相互补充,因此我将 CN 设置为 server.domain.local,在 SAN 中我有 DNS:server.domain.tld

    没有(但那个帖子现在有点老了)。

    放置 DNS 名称是通用名称 (CN) 已被 IETF 和 CA/浏览器论坛弃用。您应该将所有 DNS 名称放在主题备用名称 (SAN) 中。使用 CN 作为友好名称,例如“Example LLP”,因为它显示给用户。

    根据 CA/浏览器基线要求 (BR),CN 中的 DNS 名称也必须存在于 SAN 中。见CA/B BR, Section 9.2


    至少 Chrome,我可以无错误地浏览到 server.domain.tld(SAN 条目),但我在 server.domain.local (CN) 处遇到常见名称不匹配错误

    Chrome 正确拒绝证书如果 server.domain.local 存在于 CN,但 存在于 SAN 中。如果两者都不存在,则违反 CA/B BR。


    我应该在 SAN 字段中同时包含 server.domain.local 和 server.domain.tld

    是的,将两个 DNS 名称都放在 SAN 中。不要在 CN 中添加 DNS 名称。使用 CN 作为友好名称。


    为了完整性,CA/B 代表 CAsBrowsers。他们有自己的小型封闭俱乐部,并且有自己的一套颁发证书的政策。不要期望浏览器会按照 IETF 文档中的规定执行操作。

    如果您要验证由作为 CA/B 成员的 CA 颁发的在野外使用的 X509 证书,那么您应该使用 CA/B BR 进行验证,而不是 IETF 文档。

    【讨论】:

      【解决方案3】:

      原始问题已得到解答,但我想反驳其中一个答案中的观点。

      CA/B BR 不支持将 CN 用作友好名称,虽然对我来说很有吸引力且合情合理。 在 CA/B BR 的早期版本中,这是第 9.2.2 节,但它似乎最近移动了。 https://cabforum.org/wp-content/uploads/CAB-Forum-BR-1.3.0.pdf


      7.1.4.2.2。主题专有名称字段

      一个。证书字段:主题:commonName (OID 2.5.4.3) 必需/可选:已弃用(不鼓励,但不禁止)

      内容:如果存在,此字段必须包含单个 IP 地址或完全限定域名,它是证书的 subjectAltName 扩展中包含的值之一。


      尊敬的,--obivon

      【讨论】:

        猜你喜欢
        • 2018-07-09
        • 1970-01-01
        • 2013-05-17
        • 2017-05-14
        • 1970-01-01
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 2015-07-30
        相关资源
        最近更新 更多