您如何解决不完整的SSL链


Answers:


19

跟随zakjan的回答,当我尝试使用jquery在我的新安全服务器上的android webview中执行AJAX请求时遇到问题。它在浏览器中有效,但在我的应用程序中无效。

我使用了这个网站:https : //certificatechain.io/

我粘贴了从Comodo(positiveSSL)返回的签名的.crt文件的文本,它使我回想起了我需要的所有内容。我将其保存为我的域+“ chain.crt”(请参见下文)

然后,在我的apache配置中,我为特定的虚拟主机输入了以下内容:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

在那之后,我的Android应用程序的webview使用ajax POST到服务器没有问题。我在2个实际设备上进行了尝试,其中一个运行2.3.4,一个运行4.something。并在模拟器上运行2.3。所有工作。

我希望这有帮助。


1
对我来说,关键是添加SSLCACertificateFile指令并将其指向我的权限给我的CA文件。如果我只是将其他证书串联到我的证书文件中,将无法正常工作。
亚历克斯W

在较早的版本中,可以使用SSLCertificateChainFile代替SSLCACertificateFile(以防万一您在配置中搜索此密钥但找不到它)。
dr0i

令人难以置信的是,但@Richard的回复使用的是网站certificatechain.io,该网站说“ ...受JanŽák的cert-chain-resolver启发”,他在此处回答了这个问题:superuser.com/a/866523/92500,谢谢@zakjan!
安德烈斯·莫拉莱斯

SSLCACertificateFile是我错过了线。最初,我认为我的CA太新了,因为当某些浏览器/ OS要求使用SSL时,SSL才起作用。使用解码器。链接/ sslchecker帮助澄清我的配置错误,并且此答案已解决。谢谢!!
josephdpurcell

9

链位于crt文件中,表明原始SSL正在运行。

对于GoDaddy,有第二个证书-gd_bundle.crt

复制此信息并将其添加到服务器上安装的crt。

因此,服务器上的原始crt具有1个证书,之后在同一文件中将具有3个证书。这是连锁店。

我仍然有包含链问题的锚ssllabs.com但这不是问题,只是一个选项,或出假-根据- /security/24561/ssltest-chain-issues -contains-anchor / 24566#24566


2
要摆脱连锁问题,请从gd_bundle.crt删除最后一个证书
sanmai 2014年

7

您可以通过将证书中的所有证书连接到受信任的根证书(以排他性顺序排列)来手动解决证书链不完整的问题,以防止此类问题的发生。请注意,受信任的根证书不应存在,因为它已经包含在系统的根证书存储中。

您应该能够从颁发者那里获取中间证书,并自己将它们合并在一起。顺便说一句,我已经编写了一个脚本来自动执行该过程,它需要一个证书来生成正确链接的证书的输出。https://github.com/zakjan/cert-chain-resolver


这听起来像是一种解决方案,仅“欺骗”本地计算机以认为证书已正确设置。
亚历克斯W

不。应该将输出证书捆绑包上载到服务器,该服务器发送网站内容。每个客户都会收到带有中间证书的证书。
zakjan
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.