PHP curl错误:“与......有关的未知SSL协议错误”

时间:2014-10-03 21:57:59

标签: php ssl curl

我对PHP curl有极大的困难。我试图通过PHP curl打开一个站点https://www.novaprostaffing.com/np/index.jsp,但它不断产生以下错误:"与www.novaprostaffing.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。我被告知这个版本有一个错误,但我正在卷曲7.19.1
  4. 以上都没有奏效。如果您有任何想法如何解决这个问题,将非常感谢!

3 个答案:

答案 0 :(得分:2)

尝试设置cURL选项 CURLOPT_SSLVERSION 。我前一段时间遇到同样的问题,这对我来说很有用:)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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