为什么发现ssl证书的curl失败会间歇性地工作?

问题描述:

我想我现在有为什么你需要从HTTPS的API,如Facebook拉内容时要么有SSL证书捆绑把握好。但是我的问题是:为什么有时甚至没有证书而有些人不工作呢? 在我看来,libcurl有办法独自解决这个问题。为什么发现ssl证书的curl失败会间歇性地工作?

任何人都知道为什么或如何发生的?任何人都有相同的经历?

卷曲至于SSL证书的行为取决于CURLOPT_SSL_VERIFYPEER选项。 假设你使用PHP,你可以使用函数curl_setopt更改此选项的值。

我有SSL的只有肤浅的认识,但似乎卷曲度以下方式表现: 0表示不检查,1个检查证书是否合法,以及2次还检查,如果证书颁发给正确的主机名检查。

你可以“关闭烦人的错误”通过设置CURLOPT_SSL_VERIFYPEER为0,但是这意味着你不能肯定,你将有到正确的服务器的连接,因为任何人都可以spoof the DNS。所以这样做是非常危险的。

的官方Facebook PHP SDK提供使用CURLOPT_CAINFO自己的证书,但只有当卷曲无法验证自身的证书。我不知道为什么facebook sdk的开发者会做这个条件;也许是因为阅读证书可能很昂贵。

+0

您好,感谢这一点。 我想我没有正确解释自己。我想知道的事实是,如果你保持设置不变,你默认curl会寻找一个SSL证书......有时它不会咳嗽在PHP的错误,并没有任何理由的事情正常工作。 我想我的问题是:为什么它只是偶尔发生?还是仅仅是我? – royco 2012-02-24 16:36:39

+0

我相信这与可用于openssl的所谓“根证书”有关。在debian上,这些存储在/ usr/lib/ssl/certs中。 – Bart 2012-02-28 13:34:05

+0

graph.facebook.com/的证书由DigiCert(www.digicert.com)颁发。在我的目录中,我有许多带有该名称的证书文件(DigiCert _ *。pem)。移动这些文件似乎并不能阻止识别facebook.com卷曲;也许证书缓存不知何故? – Bart 2012-02-28 13:39:50