代码之家  ›  专栏  ›  技术社区  ›  Castro Roy

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

  •  1
  • Castro Roy  · 技术社区  · 14 年前

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

    外部url会重定向到我在文章中发送的另一个url,但每次尝试时都会出现此错误

    curl_errno=35(连接到[安全站点]:443时出现未知的SSL协议错误)

    所以我检查了萤火虫的反应,它说

    未能加载的源: 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 回复  |  直到 12 年前
        1
  •  6
  •   netcoder    14 年前

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

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

    curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    

        2
  •  2
  •   Castro Roy    14 年前

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

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

    希望这能有帮助

        3
  •  1
  •   Vasily802    8 年前

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

    curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);