【问题标题】:Why we need CURLOPT_SSL_VERIFYPEER in windows为什么我们需要在 Windows 中使用 CURLOPT_SSL_VERIFYPEER
【发布时间】:2016-02-21 02:42:45
【问题描述】:

我将稍微解释一下我的脚本,以便您理解我的问题。

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

当我在Linux VPSiMac 上测试我的脚本时,它运行良好,但是当我在Windows 上使用wampserver 测试它时,它没有工作,直到我将此行添加到cURL

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

谁能向我解释为什么我在 Windows 中需要这条线,而在 Linux 服务器上不需要它?

【问题讨论】:

    标签: php linux curl server vps


    【解决方案1】:

    Drew010 的回答是正确的。我只想补充一点,您遇到的问题与其说是 Windows v Linux 问题,不如说是两种环境不同。您可能会在两个 Linux 环境之间遇到相同的差异(我遇到了这个确切的问题),角色颠倒(在 Windows 中有效,但在 Linux 中无效)等等。

    【讨论】:

      【解决方案2】:

      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)。

      【讨论】:

      猜你喜欢
      • 2019-06-09
      • 2011-07-05
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      相关资源
      最近更新 更多