我在CentOS 7(一个Diladele设备)上pipe理运行Squid 3.5.10的公司Web代理,做SSL碰撞,并且在系统信任存储中添加新的CA证书时遇到一些麻烦,这导致我们的用户不能能够访问他们应该能够访问的几个受SSL保护的站点。 其中一个网站是https://www.sexierdating.com/ (是的,这听起来像是,但我们的政策是不在乎午餐时间人们冲浪的时间,只要它是合法的)。
来自Squid的错误消息通常是X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY ,这意味着由于某些原因Squid不信任或不能validation目标服务器证书。 到目前为止,从CA的支持页面抓取PEM格式的CA根证书,放入/etc/pki/ca-trust/source/anchors ,运行update-ca-trust并重新启动squid足以解决问题 – 但不是在我目前的情况下。 ca-certificates包是当前版本,因为我只是在机器上运行了一个完整的yum更新。
我目前遇到的所有域名都有“Go Daddy安全证书颁发机构 – G2”证书。 我从他们的支持页面( https://certs.godaddy.com/repository/ )下载了每个证书,如上所述安装它们,重新加载鱿鱼,但错误仍然存在。 我甚至用strace来观察update-ca-trust,看看它是否真正提取了正确的PEM文件 – 而且确实如此。
我奇怪的是,certs.godaddy.com下载页似乎使用了与某些有问题的域完全相同的根和中间证书,但该页面在Squid中正常工作。 当我比较Firefox中的证书时,我没有看到整体规范和algorithm有什么不同,但是仍然有效,其他方法则不行。
我在智慧结束,希望有人可以刺激我正确的方向来解决这个..我不能去GoDaddy证书的每一个第二页添加代理例外..
机器和浏览器上的CA存储包含根CA证书。
网站不应该从根CA颁发证书,而应该从中介颁发证书。
这是网站的责任,返回自己的证书和中介证书,所以浏览器可以链接中间人到其信任的根证书之一。
在您提供的网站示例中,他们不包括中介证书,因此您的用户无法信任该网站。 这可以在这里看到一个ssllabs扫描: https ://www.ssllabs.com/ssltest/analyze.html?d = http://www.sexierdating.com。 正如你所看到的,它只是发送一个证书而不是两个,因此得到一个不完整的警告。 展开证书path部分显示了完整的链,并允许您下载这个中介,如果你想要安装它。
应该指出的是,经常浏览器会处理这种情况 – 要么是因为他们会有访问其他站点caching的公共中间件,要么是因为它会尝试find缺less的中间证书。 所以这些错误configuration通常不会被大多数用户和网站运营商发现。 猜测ssl在这里碰到不太友好的用户来处理这些错误。
这与发送完整链的certs.godaddycom( https://www.ssllabs.com/ssltest/analyze.html?d=certs.godaddy.com )形成鲜明对比。 事实上,它有相反的问题,并发送太多的证书,因为没有必要发送根证书(但也许这是由于历史原因,你可以看到有两个证书链path – 其中之一需要根证书由另一个证书签名,这个证书很可能被旧版浏览器在他们的信任库中没有新的根证书使用)。
无论如何,你的select是:
毫无疑问,如果是我的话,我会select1 🙂