这cURL error 35当客户端和服务器在 SSL/TLS 握手期间无法就安全协议达成一致时,就会出现此特定消息SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version。在 2026 年,这种情况最常见的原因是客户端(您的服务器或本地环境)尝试使用过时的协议,例如 TLS 1.0 或 1.1,而目标服务器需要较新的 TLS 1.2 或 1.3。
核心原因
- **OpenSSL/cURL 版本过旧:**您的系统 OpenSSL 或 cURL 版本过旧,无法支持现代 TLS 协议(TLS 1.2+)。
- **协议不匹配:**目标服务器出于安全原因已禁用较旧的、不安全的协议,但您的客户端仍在尝试使用这些协议进行连接。
- **Cloudflare/代理设置:**如果您使用 Cloudflare,您的"最低 TLS 版本"可能设置得高于您的客户端支持的版本。
如何修复
1. 更新系统软件包
将操作系统中的 cURL 和 OpenSSL 库更新到最新版本。
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade curl openssl -y - CentOS/RHEL:
sudo yum update curl openssl -y - macOS(Homebrew):
brew upgrade curl
2. 更新 PHP 配置(如果使用 WordPress/PHP)
如果错误出现在 PHP 应用程序(例如 WordPress)中,请确保 PHP 使用的是更新后的系统库。
- 请检查您的
phpinfo()OpenSSL 版本。版本应至少为1.0.2或更高(理想情况下为 1.1.1+ 或 3.0+)。 - 更新系统库后,请重启您的 Web 服务器(Apache/Nginx/PHP-FPM)以使更改生效。
3. 在代码中强制使用现代 TLS。
如果您有权访问发出请求的代码,则可以显式强制使用更新的协议:
php
// Example for PHP cURL`
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
`
谨慎使用代码。
注意:CURL_SSLVERSION_DEFAULT通常最好使用,因为它允许协商尽可能最高的版本。
4. 调整 Cloudflare 设置
如果您的网站使用了 Cloudflare 服务,并且您在处理"Loopback"请求(网站自身连接)时看到以下情况:
- 登录Cloudflare 控制面板。
- 导航至SSL/TLS >边缘证书。
- 检查最低 TLS 版本。如果设置为 1.2 或 1.3,请确保服务器的 cURL 支持该版本,或者暂时将其降低到 1.0(不建议长期这样做以确保安全)进行测试。

5. 更新 CA 证书
有时握手失败是因为系统无法验证服务器的证书包。
- Ubuntu/Debian:
sudo apt install --reinstall ca-certificates - Windows(XAMPP/WAMP): 下载最新的cacert.pem 文件并更新其
curl.cainfo路