即使VERIFYPEER,VERIFYHOST被禁用,SSL连接错误 [英] SSL Connection Error even when VERIFYPEER, VERIFYHOST disabled

查看:294
本文介绍了即使VERIFYPEER,VERIFYHOST被禁用,SSL连接错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在构建一个脚本来完成一些SSL卷曲请求,但是我没有实现这一点。所有我从 curl_error()收到的是一个简单的 SSL连接错误字符串...这根本没有帮助。我已经尝试插入一个有效的自签名证书,禁用验证完全(如下面的代码所示),以及一百万和一个其他配置差异,但我一直得到这个错误。我在哪里出错?

 函数请求($ url,$ data,$ method)
{
$ curlSession = curl_init();

$ headers = [
'授权:基本'。 'REDACTED'
];

//设置URL
curl_setopt($ curlSession,CURLOPT_URL,$ url);
curl_setopt($ curlSession,CURLOPT_HTTPHEADER,$ headers);
curl_setopt($ curlSession,CURLOPT_HEADER,1);

switch($ method){
case'POST':
curl_setopt($ curlSession,CURLOPT_POST,1);
curl_setopt($ curlSession,CURLOPT_POSTFIELDS,$ data);
case'PUT':
curl_setopt($ ch,CURLOPT_CUSTOMREQUEST,PUT);
curl_setopt($ curlSession,CURLOPT_POSTFIELDS,$ data);
}

//直接返回,不要打印出来
curl_setopt($ curlSession,CURLOPT_RETURNTRANSFER,1);
//设置正确的端口
curl_setopt($ curlSession,CURLOPT_PORT,80);
//此连接将在30秒内超时
curl_setopt($ curlSession,CURLOPT_TIMEOUT,30);


//禁用SSL检查不工作
curl_setopt($ curlSession,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ curlSession,CURLOPT_SSL_VERIFYHOST,false);

curl_setopt($ curlSession,CURLINFO_HEADER_OUT,true);

//发送请求并将结果存储在数组
$ rawResponse = curl_exec($ curlSession);

//检查连接是否成功
if(curl_error($ curlSession)){
$ info = curl_getinfo($ curlSession);
$ curlError = curl_error($ curlSession);

//关闭cURL会话
curl_close($ curlSession);

print_r($ info);
print($ curlError);

//如果不是...
返回false;
}


$ info = curl_getinfo($ curlSession);

$ httpStatus = curl_getinfo($ curlSession,CURLINFO_HTTP_CODE);

//关闭cURL会话
curl_close($ curlSession);

return $ rawResponse;
}


解决方案

尝试添加: ($ curlSession,CURLOPT_SSLVERSION,3); $ // FIX SSL23_GET_SERVER_HELLO错误

请参阅 https://sourceforge.net/p/curl/bugs/1037


I am at present building a script to fulfil some SSL curl requests, however I have had no luck in fulfilling these. All I receive from curl_error() is a simple "SSL Connection Error" string... This is not helpful at all. I have tried inserting a valid self-signed certificate, disabled verification entirely (as seen in the code below), and a million and one other configuration variances, but I consistently get this error. Where am I going wrong?

function request($url, $data, $method)
{
    $curlSession = curl_init();

    $headers = [
    'Authorization: Basic ' . 'REDACTED'
    ];

    // Set the URL
    curl_setopt($curlSession, CURLOPT_URL, $url);
    curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curlSession, CURLOPT_HEADER,1);

    switch ($method) {
        case 'POST':
            curl_setopt($curlSession, CURLOPT_POST, 1);
            curl_setopt($curlSession, CURLOPT_POSTFIELDS, $data);
        case 'PUT':
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($curlSession, CURLOPT_POSTFIELDS, $data);
    }

    // Return it direct, don't print it out
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, 1);
    // Set correct port
    curl_setopt($curlSession, CURLOPT_PORT, 80);
    // This connection will timeout in 30 seconds
    curl_setopt($curlSession, CURLOPT_TIMEOUT, 30);


    // Disable SSL Checking as not working
    curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, false);

    curl_setopt($curlSession, CURLINFO_HEADER_OUT, true);

    // Send the request and store the result in an array
    $rawResponse = curl_exec($curlSession);

    // Check that a connection was made
    if (curl_error($curlSession)) {
        $info = curl_getinfo($curlSession);
        $curlError = curl_error($curlSession);

        // Close the cURL session
        curl_close($curlSession);

        print_r($info);
        print($curlError);

        // If it wasn't...
        return false;
    }


    $info = curl_getinfo($curlSession);

    $httpStatus = curl_getinfo($curlSession, CURLINFO_HTTP_CODE);

    // Close the cURL session
    curl_close($curlSession);

    return $rawResponse;
}

解决方案

Try to add:

curl_setopt($curlSession, CURLOPT_SSLVERSION, 3);  // FIX SSL23_GET_SERVER_HELLO error

see https://sourceforge.net/p/curl/bugs/1037

这篇关于即使VERIFYPEER,VERIFYHOST被禁用,SSL连接错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆