curl errno 35(与[安全站点]相关的未知SSL协议错误:443)

时间:2010-11-01 21:52:29

标签: php ssl curl https

我正在尝试使用curl发布到外部URL,外部页面使用https,这是我正在使用的服务器的desc

服务器Apache / 2.2.11(Win32)mod_ssl / 2.2.11 OpenSSL / 0.9.8k PHP / 5.3.0

外部网址重定向到我在帖子中发送的另一个网址,但每次我尝试我都会收到此错误

  

curl_errno = 35(与[安全网站]有关的未知SSL协议错误:443)

所以我检查一下萤火虫的反应并说出

无法加载:http://localhost/3Party/PHP_VPC_3Party_Auth_Capture_Order_DO.php

的来源

这是我正在使用的代码

ob_start();

// initialise Client URL object
$ch = curl_init();
// set the URL of the VPC

curl_setopt ($ch, CURLOPT_URL, $vpcURL);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $this->postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec ($ch);
if (curl_error($ch)) {
    $this->errorMessage = 
        "curl_errno=". curl_errno($ch) . " (" . curl_error($ch) . ")";
}
curl_close ($ch);

3 个答案:

答案 0 :(得分:6)

我认为问题在于您尝试在端口443上访问“http”URL(而不是“https”)。

您也可以尝试手动设置SSL版本:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

将3替换为远程服务器正在使用的任何SSL版本。

答案 1 :(得分:2)

经过几个星期处理这个问题,我至少能够建立连接,我不知道它是否是真正的答案,但它适用于我,我只是添加到上面的例子,选项到使用代理,就像这样

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM );
curl_setopt($ch, CURLOPT_PROXY, 'my.proxy');
curl_setopt($ch, CURLOPT_PROXYPORT, 'my.port');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'domain\user:password');  

希望这可以提供帮助

答案 2 :(得分:1)

服务器也可能是tls / ssl版本首选项。在这种情况下,您必须尝试从此处指定不同的版本常量:https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html

E.g。对我有用的是:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);