我想我现在很好地掌握了为什么你需要在类似于Facebook这样的HTTPS API的内容时拥有SSL证书捆绑包。但我的问题是:为什么甚至没有证书和其他一些没有? 在我看来,Libcurl有一种方法可以自己克服这个问题。

任何人都知道为什么或如何发生这种情况?任何人都有同样的经历?

有帮助吗?

解决方案

CURL关于SSL证书的行为取决于CURLOPT_SSL_VERIFYPER选项。 假设您使用PHP,可以使用函数 curl_setopt 更改此选项的值。

我只有ssl的肤浅知识,但似乎卷曲的行为方式如下: 0表示没有检查,1检查证书是合法的,还检查2个检查是否将证书发出到正确的主机名。

您可以通过将curlopt_ssl_verifypeoytepeer设置为0来“关闭恼人的错误”,但这意味着您无法确定您将与正确的服务器有连接,因为任何人都可以 spoof the dns 。所以这样做是非常危险的。

官方Facebook PHP SDK使用 curlopt_cainfo ,但只有在卷曲无法自行验证证书时。我不知道为什么Facebook SDK的开发人员会产生这种条件;也许是因为阅读证书可能很昂贵。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top