PHP卷曲错误:“;连接到..时出现未知的SSL协议错误;


PHP curl error: "Unknown SSL protocol error in connection to..."

我在PHP curl方面遇到了极大的困难。我正试图打开一个网站:https://www.novaprostaffing.com/np/index.jsp通过PHP curl,但它不断产生以下错误:"连接到www.novaprestaffing.com时出现未知SSL协议错误"

我的功能如下:

function getUrl($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $buffer = curl_exec($ch);
    if (!$buffer)
       {
       echo "cURL error number:" .curl_errno($ch);
       echo " and url is $url and cURL error:" . curl_error($ch);
        }
    curl_close($ch);
    return $buffer;
}

我尝试了多种修复,包括:

  1. 强制卷曲到版本3
  2. 设置CURLOPT_SSL_VERIFYPEER&CURLOPT_SSL_VERIFYHOST到0
  3. 检查是否处于卷曲7.34。有人告诉我这个版本有一个bug,但我现在使用的是卷曲7.19.1

以上都不起作用。如果你有任何想法如何解决这个问题,将不胜感激!

尝试设置cURL选项CURLOPT_SSLVERSION。我不久前也遇到了同样的问题,这对我来说很有用:)

curl_setopt($ch, CURLOPT_SSLVERSION, 3); // 1, 2 or 3

服务器只使用TLS 1.0,尝试使用SSL 2.0或SSL 3.0连接将导致您看到的错误。这意味着将版本设置为3对于这个服务器来说是完全错误的。除此之外,证书链是不完整的。服务器只提供叶证书,而不提供中间证书,直到受信任的根。这将导致验证失败。

您是否尝试过其他https url,看看是否有效?以下是的3个常见原因

  1. 目标站点不喜欢该协议
  2. 目标站点不喜欢密码
  3. SSL私钥已过期