【问题标题】:Curl error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure111卷曲错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败111
【发布时间】:2026-01-30 08:35:01
【问题描述】:

我有错误:Curl 错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败111 使用此卷曲设置:

    $oCURL = curl_init();
    curl_setopt($oCURL, CURLOPT_POST, 1);
    curl_setopt ($oCURL, CURLOPT_SSLVERSION, 4);
    curl_setopt($oCURL, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
    curl_setopt($oCURL, CURLOPT_POSTFIELDS, implode('&', $headers));
    curl_setopt($oCURL, CURLOPT_URL, 'https://' . PRZELEWY24_TYPE . '.przelewy24.pl/trnRegister');
    curl_setopt($oCURL, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($oCURL, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    curl_setopt($oCURL, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($oCURL, CURLOPT_SSL_VERIFYPEER, false);

【问题讨论】:

  • 不要关闭安全性,而是正确设置传输加密。

标签: php ssl curl


【解决方案1】:
curl_setopt ($oCURL, CURLOPT_SSLVERSION, 4);

这会强制执行 TLS 1.0。不知道为什么要将 curl 限制为有点过时的 TLS 协议版本。

curl_setopt($oCURL, CURLOPT_URL, 'https://' . PRZELEWY24_TYPE . '.przelewy24.pl/trnRegister');

不清楚PRZELEWY24_TYPE 是什么。但假设这是sandbox,那么请求将失败,因为相关站点不再支持 TLS 1.0,只支持更现代的协议,如 TLS 1.2 和 TLS 1.3。

建议您既不设置CURLOPT_SSLVERSION 也不设置CURLOPT_SSL_CIPHER_LIST,而是使用默认值——在这种情况下它可能会起作用。另请注意,您也不应将生产站点的 CURLOPT_SSL_VERIFYPEER 设置为 false,因为这会使您的客户端容易受到中间人的攻击。

【讨论】:

    最近更新 更多