Mac OS X - 接受自签名多域SSL证书

时间:2013-04-09 16:10:58

标签: google-chrome ssl certificate self-signed

我已经使用Keychain Access导入了多个域名(例如my.foo.bar.com& yours.foo.bar.com)的自签名证书,但Chrome仍然不接受,提示我在每个浏览会话开始时进行验证每个域

证书是使用x509v3 主题备用名称扩展名生成的,用于验证多个域。如果我导航到之前我导入证书,我会在导入后收到与不同的警告消息。下面附有两个错误的图像(顶部是导入前的错误)

enter image description here

有没有办法接受自签名的多域证书?我只在Chrome中收到警告,顺便说一下。 FF和Safari工作得很好(除了那些浏览器很糟糕;))

更新:我尝试使用openssl cli和xca GUI

生成证书

1 个答案:

答案 0 :(得分:5)

问题在于您尝试使用过宽的通配符(**.com)。

规范(RFC 6125RFC 2818 Section 3.1)谈论“最左侧”标签,这意味着应该有多个标签:

 1.  The client SHOULD NOT attempt to match a presented identifier in
     which the wildcard character comprises a label other than the
     left-most label (e.g., do not match bar.*.example.net).

 2.  If the wildcard character is the only character of the left-most
     label in the presented identifier, the client SHOULD NOT compare
     against anything but the left-most label of the reference
     identifier (e.g., *.example.com would match foo.example.com but
     not bar.foo.example.com or example.com).

我不确定是否有规格说明应该有多少个最小标签,但Chromium code表示必须至少有2个点:

  

我们需要至少3个组件(即2个点)作为基本保护   反对过于宽泛的野蛮。

这确实是为了防止像*.com这样过于宽泛的案件。这可能看起来不方便,但CA偶尔会犯错,并且有一个措施来防止发给*.com的潜在流氓证书工作并不一定是坏事。 如果我没记错的话,一些实现比这更进一步,并且列表域对于二级域也太宽泛(例如.co.uk)。

关于你的第二个例子:“ CN:bar.com,SANs:DNS:my.foo.bar.com,DNS:yours.foo.bar.com ”。此证书应对my.foo.bar.comyours.foo.bar.com有效,但不对bar.com有效。当没有SAN时,CN只是一个后备解决方案。如果有任何SAN,则应忽略CN(尽管某些实现将更容忍)。