Facebook 为什么查找ssl证书的错误会间歇性地工作?

Facebook 为什么查找ssl证书的错误会间歇性地工作?,facebook,ssl,curl,libcurl,intermittent,Facebook,Ssl,Curl,Libcurl,Intermittent,我想我现在已经很好地理解了为什么在从https api(如facebook)提取内容时需要ssl证书捆绑包。但我的问题是:为什么有时即使没有证书,这种方法也能奏效,而有些则不行? 在我看来,libcurl有自己的方法来克服这个问题 有人知道这是为什么或如何发生的吗?有没有人有过同样的经历?cUrl对SSL证书的行为取决于CURLOPT_SSL_VERIFYPEER选项。 假设您使用PHP,则可以使用该函数更改此选项的值 我对SSL只有肤浅的了解,但cUrl的行为方式似乎如下: 0表示不检查,1检

我想我现在已经很好地理解了为什么在从https api(如facebook)提取内容时需要ssl证书捆绑包。但我的问题是:为什么有时即使没有证书,这种方法也能奏效,而有些则不行? 在我看来,libcurl有自己的方法来克服这个问题


有人知道这是为什么或如何发生的吗?有没有人有过同样的经历?

cUrl对SSL证书的行为取决于CURLOPT_SSL_VERIFYPEER选项。 假设您使用PHP,则可以使用该函数更改此选项的值

我对SSL只有肤浅的了解,但cUrl的行为方式似乎如下: 0表示不检查,1检查证书是否合法,2检查证书是否颁发给正确的主机名

您可以通过将CURLOPT_SSL_VERIFYPEER设置为0来“关闭恼人的错误”,但这意味着您无法像任何人一样确保您将连接到正确的服务器。所以这样做是非常危险的


官方的FacebookPHPSDK使用提供自己的证书,但仅当curl无法自己验证证书时。我不知道facebook sdk的开发者为什么会有条件这样做;可能是因为阅读证书可能会很贵。

您好,谢谢。我想我没有正确地解释我自己。我想知道的是,如果您保持设置不变,默认情况下,您将查找ssl证书。。。有时,它不会在php上抛出错误,并且毫无理由地工作正常。我想我的问题是:为什么它只是偶尔发生?还是只有我?我相信这与openssl可用的所谓“根证书”有关。在debian上,这些证书存储在/usr/lib/ssl/certs中。graph.facebook.com/的证书由DigiCert(www.DigiCert.com)颁发。在我的目录中,我有许多同名的证书文件(DigiCert_*.pem)。移动这些文件似乎并不能阻止curl识别facebook.com;也许证书是以某种方式缓存的?将所有文件移动到临时目录似乎会阻止curl识别证书。当我使用-k或--unsecure标志,或者当我恢复.pem文件时,连接被恢复。另外,请查看:-)