Curl error: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

通常是由于你尝试与服务器进行 SSL/TLS 握手时,协议版本不匹配导致的。

具体来说,服务器要求更高版本的 TLS,而 cURL 使用的是较旧的 SSL/TLS 版本。

错误的原因

协议版本问题

你当前的 cURL 客户端可能使用的是较旧的 TLS 协议(如 TLS 1.0 或 TLS 1.1),而目标服务器要求更高版本的 TLS(如 TLS 1.2 或 TLS 1.3)。

解决方式:强制使用更高的 TLS 版本(如 TLS 1.2 或 TLS 1.3)

你可以在 cURL 请求中强制指定使用较新的 TLS 版本。通过 CURLOPT_SSLVERSION 选项,指定使用 TLSv1.2 或更高版本:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);

OpenSSL 版本过低

如果你的系统上安装的 OpenSSL 版本较低,可能不支持新版本的 TLS 协议。

解决方式:更新 OpenSSL 和 cURL

确保你使用的 OpenSSL 和 cURL 版本是最新的。较新的 OpenSSL 版本会支持更高版本的 TLS 协议。

在 Linux 上,你可以使用以下命令来更新:

sudo apt-get update
sudo apt-get install –only-upgrade openssl
sudo apt-get install –only-upgrade curl

在 Windows 上,你可以下载和安装最新版本的 cURL 和 OpenSSL。

其他方式:禁用 SSL 检查(仅限调试)

如果你只是想绕过这个问题进行调试,可以暂时禁用 SSL 证书验证(不推荐在生产环境中使用):

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

但请注意,禁用 SSL 验证会降低安全性,因此仅应在调试时使用。

作者 admin

百度广告效果展示