magento下的sslv3警报握手失败

Posted

技术标签:

【中文标题】magento下的sslv3警报握手失败【英文标题】:sslv3 alert handshake failure under magento 【发布时间】:2016-07-03 10:16:26 【问题描述】:

我用magento开发了一个paypal pro。

我的 paypal 代码如下所示:

$api_username = 'sdk-three_api1.sdk.com';
$api_password = 'QFZCWN5HZM8VBG7Q';
$api_signature = 'A.d9eRKfd1yVkRrtmMfCFLTqa6M9AyodL0SJkhYztxUi8W9pCXF6.4NI';
$api_version = '57.0';
$api_endpoint = 'https://api-3t.sandbox.paypal.com/nvp';

    $request_params = array
    (
        'METHOD' => 'DoDirectPayment', 
        'USER' => $api_username, 
        'PWD' => $api_password, 
        'SIGNATURE' => $api_signature, 
        'VERSION' => $api_version, 
        'PAYMENTACTION' => 'Sale',                   
        'IPADDRESS' => $_SERVER['REMOTE_ADDR'],
        'CREDITCARDTYPE' => $params['creditCardType'], 
        'ACCT' => $params['creditCardNumber'],                        
        'EXPDATE' => $params['expDateMonth'].$params['expDateYear'],           
        'CVV2' => $params['cvv2Number'], 
        'FIRSTNAME' => 'Tester', 
        'LASTNAME' => 'Testerson', 
        'STREET' => '707 W. Bay Drive', 
        'CITY' => 'Largo', 
        'STATE' => 'FL',                     
        'COUNTRYCODE' => 'US', 
        'ZIP' => '33770', 
        'AMT' => $plan_data['amount'], 
        'CURRENCYCODE' => 'USD', 
        'DESC' => 'Testing Payments Pro'
    );

    $nvp_string = '';
    foreach($request_params as $var=>$val)
    
        $nvp_string .= '&'.$var.'='.urlencode($val);    
    
    //var_dump($nvp_string); die;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_VERBOSE, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    curl_setopt($curl, CURLOPT_URL, $api_endpoint);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $nvp_string);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');
    //curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');

    $result = curl_exec($curl);     
    if (curl_errno($curl))
    
        echo "CURL send a error during perform operation: ".curl_error($curl);
     
    else 
    
        curl_close($curl);
    

    // Parse the API response
    $nvp_response_array = parse_str($result);
    var_dump($result);  

但是我得到一个像

这样的错误

错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手 失败

如果我没有添加这两行

curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');

然后给我一个类似的错误

错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

有什么帮助吗?

【问题讨论】:

***.com/questions/26379773/… 有什么帮助吗? 除了删除 CURLOPT_SSLVERSION 部分,您还需要确保您的 curl 版本支持 TLS 连接。旧版本的 curl 不支持 TLS 1.0 及更高版本。因此,当您删除 CURLOPT_SSLVERSION 时,可用的最高协议是 SSL v3,这会导致连接失败。 我的 curl 版本是 7.30.0。支持吗? 【参考方案1】:

最近对 Sandbox 进行了一些更新,稍后需要在 Live 上应用更新,此post 将帮助您

【讨论】:

谢谢。很有帮助。

以上是关于magento下的sslv3警报握手失败的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用客户端证书时解决 sslv3 警报握手失败

另一个 Paypal Curl / SSL v3 握手错误 - SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败

贝宝错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败在 laravel

Paypal Sandbox IPN: 14077410:sslroutines:ssl23_get_server_hello:sslv3 警报握手失败