Jür*_*len 69 ssl https ssl-certificate
假设SSL证书的主题备用名称(SAN)属性包含两个DNS名称
domain.tldhost.domain.tld但公共名称(CN)仅设置为两者之一:CN=domain.tld.
host.domain.tld正在请求另一个,服务器端会发生什么?编辑:
正如Eugene的回答最近所了解的那样,行为因实现而异,我想更具体一点:OpenSSL 0.9.8b +如何处理给定的场景?
Eug*_*its 75
这取决于实现,但一般规则是针对所有SAN和公用名检查域.如果在那里找到域,则证书可以连接.
RFC 5280,第4.1.2.6节说"主题名称可以在主题字段和/或subjectAltName扩展名中携带".这意味着必须根据证书的SubjectAltName扩展名和Subject属性(即它的公用名参数)检查域名.这两个地方相互补充,而不是重复.SubjectAltName是放置其他名称的合适位置,例如www .domain.com或www2 .domain.com
更新:根据RFC 6125,在2011年发布,验证器必须首先检查SAN,如果SAN存在,则不应检查CN.请注意,RFC 6125是相对较新的,并且仍然存在颁发证书的证书和CA,其中包括CN中的"主"域名和SAN中的备用域名.即,如果存在SAN,则从验证中排除CN,您可以拒绝一些其他有效的证书.
小智 41
为了绝对正确,您应该将所有名称放入SAN字段中.
CN字段应该包含主题名称而不是域名,但是当Netscape发现这个SSL时,他们错过了定义其最大的市场.只是没有为服务器URL定义证书字段.
解决这个问题是为了将域放入CN字段,现在不推荐使用CN字段,但仍然广泛使用.CN只能拥有一个域名.
对此的一般规则:CN - 放在这里你的主要URL(为了兼容性)SAN - 把你所有的域放在这里,重复CN,因为它不在那里,但它用于那...
如果您找到了正确的实施方案,您的问题的答案将如下:
这个设置是否具有特殊含义,或者与设置两个CN相比有什么优势?你不能设置两个CN,因为CN只能包含一个名称.您可以使用2个简单的CN证书而不是CN + SAN证书,但是您需要2个IP地址.
如果请求另一个host.domain.tld,服务器端会发生什么?在服务器端发生什么并不重要.
简而言之:当浏览器客户端连接到此服务器时,浏览器会发送加密包,这些包使用服务器的公钥进行加密.服务器解密包,如果服务器可以解密,则为服务器加密.
在解密之前,服务器不知道客户端的任何信息,因为只有IP地址没有通过连接加密.这就是为什么2个证书需要2个IP的原因.(忘了SNI,现在还有太多的XP了.)
在客户端,浏览器获取CN,然后是SAN,直到检查完所有内容.如果其中一个名称与该站点匹配,则URL验证由浏览器完成.(我不是在谈论证书验证,当然很多ocsp,crl,aia请求和答案每次都在网上传播.)
Sta*_*uff 10
我看到还没有人提到基线要求中的部分.我觉得他们很重要.
问: SSL - 通用名称(CN)和主题备用名称(SAN)如何协同工作?
答:完全没有.如果有SAN,则可以忽略CN. - 至少如果进行检查的软件严格遵守CABForum的基线要求.
(所以这意味着我无法回答你的问题的"编辑".只有原始问题.)
CABForum基线要求,v.1.2.5(截至2015年4月2日),第9-10页:
9.2.2主题专有名称字段
a.主题公共名称字段
证书字段: subject:commonName(OID 2.5.4.3)
必需/可选:不推荐使用(不鼓励,但不禁止)
内容:如果存在,此字段必须包含单个IP地址或完全限定域名,即一个证书的subjectAltName扩展中包含的值的值(参见第9.2.1节).
RFC 2818: HTTP Over TLS,2000,第3.1节:服务器标识:
如果存在类型为dNSName的subjectAltName扩展名,则必须将其用作标识.否则,必须使用证书的Subject字段中的(最具体的)Common Name字段.尽管使用Common Name是现有做法,但不推荐使用它,并且鼓励证书颁发机构使用dNSName.
RFC 6125: 使用传输层安全(TLS)上下文中的X.509(PKIX)证书,Internet公钥基础结构中基于域的应用程序服务标识的表示和验证,2011,第6.4.4节:检查公共名称:
[...]当且仅当所呈现的标识符不包括DNS-ID,SRV-ID,URI-ID或客户端支持的任何特定于应用程序的标识符类型时,客户端可以作为最后的手段检查一个字符串,其形式与主题字段的公共名称字段中的完全限定DNS域名的形式匹配(即,CN-ID).