为什么我们在Windows中需要CURLOPT_SSL_VERIFYPEER

时间:2015-11-19 05:13:23

标签: php linux curl server vps

我将解释一下我的剧本,以便你能理解我的问题。

基本上我做了一个脚本,检查SOCKS5是live还是dead

当我在Linux VPSiMac上测试我的脚本时,它运行得很好,但是当我在Windows上使用wampserver进行测试时,直到我将此行添加到{{ 1}}:

cURL

任何人都可以向我解释为什么我在Windows中需要这一行而我在Linux服务器上不需要它?

2 个答案:

答案 0 :(得分:3)

SSL Certificates上的此cURL手册页介绍了连接到SSL / TLS安全主机时 证书验证 的过程。

您需要在Windows上将CURLOPT_SSL_VERIFYPEER设置为false的原因是因为缺少用于验证证书的CA捆绑包(或者没有编译到cURL中的默认路径,因此您需要明确定义它。)

您可以使用curl.cainfo指令在php.ini中对其进行配置,或者在运行时使用以下命令对其进行指定:

curl_setopt($curl, CURLOPT_CAFILE, 'C:/path/to/ca-bundle.crt');

如果您没有副本,请抓住最近的here

虽然禁用同行验证是一种解决方法,但这可能不安全,因为您正在禁用确保您与您认为自己所在网站进行安全通信的检查。

任何人都可以生成自签名证书来冒充域名,但如果证书无法验证,则浏览器或客户端(如cURL)将失败,除非您忽略或绕过此检查(即CURLOPT_SSL_VERIFYPEER = false)。 / p>

答案 1 :(得分:0)

Drew010的答案是对的。我只是补充说,您遇到的问题不仅仅是Windows v Linux问题,而是两个环境不同。你可能会遇到两个Linux环境(我遇到这个问题)的相同区别,角色颠倒(在Windows中工作但在Linux中不工作)等。

相关问题