我将解释一下我的剧本,以便你能理解我的问题。
基本上我做了一个脚本,检查SOCKS5是live
还是dead
。
当我在Linux VPS
和iMac
上测试我的脚本时,它运行得很好,但是当我在Windows上使用wampserver
进行测试时,直到我将此行添加到{{ 1}}:
cURL
任何人都可以向我解释为什么我在Windows中需要这一行而我在Linux服务器上不需要它?
答案 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中不工作)等。