Ssl 常见名称(CN)和主题备选名称(SAN)如何协同工作?

Ssl 常见名称(CN)和主题备选名称(SAN)如何协同工作?,ssl,https,ssl-certificate,Ssl,Https,Ssl Certificate,假设SSL证书的Subject Alternative Name(SAN)属性包含两个DNS名称 domain.tld host.domain.tld 但是公共名称(CN)仅设置为两者之一:CN=domain.tld 此设置是否具有特殊意义,或者与设置两个CNs相比有任何[dis]优势 如果正在请求另一个主机,host.domain.tld,服务器端会发生什么情况 具体来说,OpenSSL 0.9.8b+如何处理给定场景?这取决于实现,但一般规则是根据所有SAN和公共名称检查域。如果在那里找

假设SSL证书的Subject Alternative Name(SAN)属性包含两个DNS名称

  • domain.tld
  • host.domain.tld
  • 但是公共名称(CN)仅设置为两者之一:
    CN=domain.tld

    • 此设置是否具有特殊意义,或者与设置两个CNs相比有任何[dis]优势
    • 如果正在请求另一个主机,
      host.domain.tld
      ,服务器端会发生什么情况

    具体来说,OpenSSL 0.9.8b+如何处理给定场景?

    这取决于实现,但一般规则是根据所有SAN和公共名称检查域。如果在那里找到域,则证书可以连接

    ,第4.1.2.6节说“受试者姓名可以在“受试者”字段和/或“受试者姓名扩展名”中携带”。这意味着必须根据证书的SubjectAltName扩展和Subject属性(即其公共名称参数)检查域名。这两个地方相互补充,而不是重复。SubjectAltName是放置其他名称的合适位置,例如www.domain.com或www2.domain.com


    更新:根据2011年发布的,验证器必须首先检查SAN,如果SAN存在,则不应检查CN。请注意,RFC 6125相对较新,仍然存在颁发证书的证书和CA,其中包括CN中的“主”域名和SAN中的备选域名。也就是说,如果存在SAN,则通过将CN排除在验证之外,您可以拒绝某些其他有效的证书。

    为了绝对正确,您应该将所有名称放入SAN字段中

    CN字段应该包含一个主题名而不是域名,但是当Netscape发现这个SSL的东西时,他们没有定义它最大的市场。 只是没有为服务器URL定义证书字段

    将域放入CN域就解决了这一问题,现在CN域的用法已被弃用,但仍被广泛使用。 CN只能拥有一个域名

    这方面的一般规则: CN-将您的主URL放在这里(为了兼容性) SAN-把你所有的域名放在这里,重复CN,因为它不在正确的位置,但它是用来

    如果您找到了正确的实施方案,您的问题的答案如下:

    • 此设置是否具有特殊意义,或者与设置两个CNs相比有什么优势? 您不能同时设置两个CN,因为CN只能包含一个名称。 您可以使用2个简单的CN证书来代替一个CN+SAN证书,但您需要2个IP地址

    • 如果请求另一个主机,host.domain.tld,服务器端会发生什么情况? 服务器端发生了什么并不重要

    简言之: 当浏览器客户端连接到此服务器时,浏览器将发送加密的包,这些包使用服务器的公钥进行加密。服务器解密包,如果服务器可以解密,则为服务器加密包

    服务器在解密之前不知道客户端的任何信息,因为只有IP地址没有通过连接加密。这就是为什么您需要2个IP才能获得2个证书的原因。(忘记SNI吧,现在仍然有太多的XP。)

    在客户端,浏览器获取CN,然后获取SAN,直到检查完所有内容。 如果其中一个名称与站点匹配,则URL验证由浏览器完成。 (我不是在谈论证书验证,当然,每次都有很多ocsp、crl、aia请求和回答在网上传播。)

    CABFORM基线要求 我发现还没有人在基线要求中提到该部分。我觉得他们很重要

    Q:SSL-通用名称(CN)和主题替代名称(SAN)如何协同工作?
    A:一点也不。如果存在SAN,则可以忽略CN。-至少如果进行检查的软件严格遵守CABForum的基线要求

    (这意味着我无法回答您问题的“编辑”,只能回答原始问题。)

    :

    9.2.2主题可分辨名称字段
    a。主题通用名称字段
    证书字段:主题:commonName(OID 2.5.4.3)
    必需/可选:不推荐(不鼓励,但不禁止)
    内容:如果存在,此字段必须包含单个IP地址或完全限定的域名,该域名是证书的subjectAltName扩展中包含的值之一(请参见第9.2.1节)

    编辑:来自@Bruno评论的链接 RFC2818:TLS上的HTTP,2000年:

    如果存在dNSName类型的subjectAltName扩展名,则必须 被用作身份。否则,将使用(最具体的)通用名称 必须使用证书的“主题”字段中的字段。虽然 通用名称的使用是现有的做法,不推荐使用,并且 鼓励认证机构改用dNSName

    RFC 6125:基于域的应用程序服务的表示和验证 使用X.509(PKIX)的Internet公钥基础架构中的标识 传输层安全(TLS)上下文中的证书,2011年:

    […]当且仅当呈现的标识符不包含 DNS-ID、SRV-ID、URI-ID或任何特定于应用程序的标识符类型 在客户的支持下,则客户可作为最后手段进行检查 对于其形式与完全限定DNS域的形式匹配的字符串 主题字段的公共名称字段中的名称(即CN-ID)


    这是一般短路吗?我的意思是,SAN总是首先被检查,如果被发现,CN根本就没有被检查?如果你处理的是IE,它似乎是ign