如何确保通道发送所有中间CA证书?


13

少数计算机(但不是大多数)正在拒绝我的网络服务器的SSL证书。问题似乎是某些计算机拒绝了CA证书。未完全更新时,问题似乎在Mac OS X 10.6上显现。

根据http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com的介绍 -没问题。

根据http://certlogik.com/sslchecker/,没有中间证书被发送出去。

我的证书来自Starfield Technologies,我在sf_bundle.crt这里使用:certs.godaddy.com/anonymous/repository.seam

我正在通过stunnel在服务器上处理SSL,内容如下stunnel.conf

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

有什么想法我可能做错了吗?

Answers:


17

CAFile选项将CA配置为用于客户端身份验证证书。这不是你想要的。

相反,您想在cert选项中制作文件以包含整个适用的证书链。您需要保存该文件的备份副本,然后创建一个新副本。基本上将两个文件合并,格式如下:

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

这将迫使stunnel向客户端提供完整的证书链。

另一个花絮;该openssl s_client命令对于测试证书链问题以及检查服务如何展示其证书非常有用。

编辑: 好的..该证书捆绑包的链是三层,但是信任链看起来是两层。有点不对劲。

顶级证书(“ Starfield安全证书颁发机构”)由名为“ Starfield Class 2证书颁发机构”的颁发ad7e1c28者签名,其指纹以.. 开头,但捆绑包中的第二个证书的名称与第一个证书的签名者完全相同,应该是完全相同的证书,并具有以开头的指纹363e4734,并且到期日为10年。然后,第三个(根)证书是所包含的中间证书的签名者。但是,这两个证书都与第一个证书没有任何关系!

如果那没有道理,请不要担心。简介:草率的工作,有人严重放弃了建立此证书包的球。因此,最好的选择是从成功验证链的浏览器中以base-64格式导出文件,并将其粘贴到我在此处列出的格式。

由于这是一个混乱的混乱局面,您自己没有错,我猜了一下您的DNS名称并获取了证书,我认为这应该是您需要的完整链:http : //pastebin.com/Lnr3WHc8


谢谢,这非常有用!我无法投票,因为我没有代表点,但我会:-)
杰克·斯塔尔

@Jack如果您的问题已解决,则即使回复率较低,您也可以接受答案。我已经编辑了该帖子,以澄清他们提供的证书捆绑程序已被搞砸了。.由于那是一团糟,我继续为您提供完整的证书链。
Shane Madden


1

对于面临此问题的其他任何人,Shane的帖子都成功了,尽管我还必须包括CAFile。还创建链的时候,一定要按照文件命名为每指示这篇文章

要确定应使用的文件名,可以使用OpenSSL随附的c_hash程序(在/usr/local/ssl/misc目录中):

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

因此,在上述情况下,您已将文件重命名为a4644b49.0
(请注意,文件名中的点后是零,而不是字母“ O”。)

如果没有该c_hash程序,则可以运行相应的OpenSSL命令来确定哈希值:

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

并且,如果您正遇到此问题,请尝试将websockets与android cordova一起使用,请确保将wss手动添加到cordova-whitelist内容中,因为*仅包含http和https。


您链接到的文章的顶部带有一个大红色标语,上面写着“ 此页面已贬值,您确定此信息正确无误,在此时支持或应做的事情”。写作?
奥斯丁2015年

2
正面的,至少仅对于引用的部分而言。除非您将证书链命名为文件的哈希值,否则stunnel会摇摆不定。
BrightEyed

另外,我们也不需要附加.0。谢谢你的拼写修复,顺便说一句,在looooong晚上之后删除了帖子; D
BrightEyed

太好了,很高兴听到验证。我知道,我现在已经连续第三天了。(11点,然后14小时,今天可能又是14小时。)
奥斯丁2015年

1
Eeesh,实现IT梦想:D
BrightEyed
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.