如何解决Composer TLS握手失败问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1036个文字,预计阅读时间需要5分钟。
Composer 安装或更新时出现 SSL handshake failed 或报错 cURL error 35、SSL connect error,基本原因是本地 TLS 环境与 Packagist/Repo 服务器不兼容,不是 Composer 本身 bug,也不需要直接关闭 SSL 验证。
为什么 Composer 会 SSL 握手失败
根本原因通常是 OpenSSL 版本过旧(如系统自带的 OpenSSL 1.0.x)、CA 证书陈旧、或中间网络设备(公司代理、防火墙、DNS 污染)篡改了 TLS 握手流程。Packagist 自 2023 年起强制要求 TLS 1.2+ 和现代密码套件,老系统(如 CentOS 7 默认 OpenSSL 1.0.2k)无法协商成功。
- 常见错误信息:
cURL error 35: SSL connect error、SSL handshake failed、Peer certificate cannot be authenticated - 不是所有 HTTPS 网站都出问题,只影响
https://packagist.org及镜像(如阿里云、腾讯云镜像),说明问题出在服务端 TLS 配置升级后客户端不匹配 -
composer diagnose会明确提示curl: (35) SSL connect error,这是第一排查线索
检查并升级本地 OpenSSL 和 cURL
Composer 依赖 PHP 的 cURL 扩展,而 cURL 又依赖底层 OpenSSL。
本文共计1036个文字,预计阅读时间需要5分钟。
Composer 安装或更新时出现 SSL handshake failed 或报错 cURL error 35、SSL connect error,基本原因是本地 TLS 环境与 Packagist/Repo 服务器不兼容,不是 Composer 本身 bug,也不需要直接关闭 SSL 验证。
为什么 Composer 会 SSL 握手失败
根本原因通常是 OpenSSL 版本过旧(如系统自带的 OpenSSL 1.0.x)、CA 证书陈旧、或中间网络设备(公司代理、防火墙、DNS 污染)篡改了 TLS 握手流程。Packagist 自 2023 年起强制要求 TLS 1.2+ 和现代密码套件,老系统(如 CentOS 7 默认 OpenSSL 1.0.2k)无法协商成功。
- 常见错误信息:
cURL error 35: SSL connect error、SSL handshake failed、Peer certificate cannot be authenticated - 不是所有 HTTPS 网站都出问题,只影响
https://packagist.org及镜像(如阿里云、腾讯云镜像),说明问题出在服务端 TLS 配置升级后客户端不匹配 -
composer diagnose会明确提示curl: (35) SSL connect error,这是第一排查线索
检查并升级本地 OpenSSL 和 cURL
Composer 依赖 PHP 的 cURL 扩展,而 cURL 又依赖底层 OpenSSL。

