composer提示SSL read: error怎么办_composer网络连接重置与证书更新【指南】

11次阅读

composer 执行时提示 ssl read: Error 是 OpenSSL 在 TLS 握手或响应读取阶段失败所致,主因是系统 CA 证书过期、OpenSSL 版本老旧、代理干扰;应优先更新 CA 证书包与 OpenSSL,其次排查代理设置,禁用 secure-http 仅限临时调试。

composer提示SSL read: error怎么办_composer网络连接重置与证书更新【指南】

Composer 执行时提示 SSL read: error 怎么办

这是 Composer 在 https 请求过程中底层 OpenSSL 读取 TLS 握手或响应数据失败的典型报错,不是网络不通,而是 SSL/TLS 协商环节中断。常见于证书过期、系统 CA 证书库陈旧、代理干扰或 OpenSSL 版本缺陷。

检查并更新系统的 CA 证书包

Composer 依赖系统级 CA 证书(如 linux/etc/ssl/certs/ca-certificates.crtmacOS 的钥匙串),若证书库多年未更新,会无法验证 packagist.org 等域名的新签发证书。

  • ubuntu/debiansudo apt update && sudo apt install --reinstall ca-certificates
  • centos/RHEL:sudo yum reinstall ca-certificatessudo dnf reinstall ca-certificates
  • macOS(Homebrew):brew reinstall ca-certificates,再执行 brew link --force ca-certificates
  • windowsgit bash / WSL):优先更新 WSL 系统证书;若用 Windows 原生 php,需手动更新 PHP 的 curl.cainfo 指向最新证书 bundle(如从 curl.se 下载 cacert.pem

绕过证书校验(仅限临时调试,不推荐生产)

强制关闭 SSL 验证能跳过该错误,但会暴露中间人攻击风险,且 Composer 2.2+ 默认禁用此行为。仅在确认网络环境可信(如离线开发机、内网镜像)时短时使用:

composer config -g secure-http false composer clear-cache

注意:secure-http false 同时禁用所有 HTTPS 源的安全校验,包括包下载和元数据请求;恢复命令为 composer config -g secure-http true

排查代理与 OpenSSL 版本问题

企业网络常用 HTTP 代理或 SSL 解密网关,可能破坏 TLS 流量完整性;老旧 OpenSSL(如 1.0.2 或更早)存在已知握手 bug,尤其在 TLS 1.3 协商中易触发 SSL read: error

  • 检查是否走代理:echo $HTTP_PROXY $HTTPS_PROXY,临时取消:unset HTTP_PROXY HTTPS_PROXY
  • 查看 OpenSSL 版本:php -r "print_r(openssl_get_cipher_methods());" 不报错但 openssl version 显示 OpenSSL 1.0.2*?建议升级到 1.1.1 或 3.x
  • 验证是否真为 OpenSSL 问题:运行 php -r "var_dump(file_get_contents('https://repo.packagist.org/packages.json'));",若同样失败,说明是 PHP/cURL 层面的 SSL 问题,非 Composer 特有

证书更新和 OpenSSL 升级解决 90% 的 SSL read: error 场景,但很多人只记得清缓存或换源,却忽略系统证书本身已失效——这点最容易被跳过。

text=ZqhQzanResources