繁体   English   中英

curl errno 35(与[安全站点]:443连接时发生未知的SSL协议错误)

[英]curl errno 35 (Unknown SSL protocol error in connection to [secure site]:443)

我正在尝试使用curl将帖子发布到外部URL,externa页面使用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);

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

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

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

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

处理此问题几周后,我至少能够建立连接,我不知道这是否是真正的答案,但它对我有用,我刚刚在上面的示例中添加了使用代理的选项,像这样

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');  

希望这可以帮助

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

例如,对我有用的是:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM