Composer 的 ca-bundle 是内置的 PEM 格式 CA 证书集合,用于验证 HTTPS 连接中远程服务器身份;其可能因根证书过期、中间证书吊销或新 CA 加入而失效,导致 cURL error 60 等 SSL 验证失败,可通过更新系统 CA 或配置 cafile 指向最新证书路径修复。

Composer 的 ca-bundle 是一个内置的 SSL/TLS 证书信任库,本质上是一份 PEM 格式的 CA 证书集合(即 ca-bundle.crt 文件),用于验证 HTTPS 连接中远程服务器(如 Packagist、GitHub、私有仓库)的身份。Composer 在发起网络请求(例如 composer install 或 update)时,会用它来校验目标站点的 HTTPS 证书是否由受信任的根证书机构签发。
为什么 ca-bundle 有时会失效或需要更新?
CA 证书并非永久有效——根证书会过期、中间证书可能被吊销、新 CA 加入信任体系,或旧 CA 被移除。如果 Composer 使用的 ca-bundle 版本太老,就可能出现以下情况:
- 访问 Packagist.org 或 GitHub 时提示
cURL error 60: SSL certificate problem或unable to get local issuer certificate - 私有 Git 仓库(如自建 GitLab)因使用了较新的 Let’s Encrypt 中间证书而无法克隆
- 某些企业环境启用了 TLS 拦截代理,但 ca-bundle 未包含该代理的内部根证书
- 系统级 CA 存储已更新(如 Ubuntu/Debian 的
ca-certificates包升级),但 Composer 仍沿用旧 bundle
如何更新 Composer 的 ca-bundle?
Composer 默认优先使用系统 CA(如 Linux 的 /etc/ssl/certs/ca-certificates.crt),若不可用才回退到自带 bundle。你可以主动刷新或指定路径:
YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,
- 运行
composer diagnose查看当前使用的 CA 路径(输出中含CA file行) - 手动更新系统 CA(推荐):
• Ubuntu/Debian:sudo apt update && sudo apt install --reinstall ca-certificates
• CentOS/RHEL:sudo yum reinstall ca-certificates或sudo dnf reinstall ca-certificates - 强制 Composer 使用系统 bundle:
composer config -g cafile /etc/ssl/certs/ca-certificates.crt(Linux)或对应路径(macOS:/etc/ssl/cert.pem;Windows:C:\cacert.pem) - 不建议长期禁用验证(如设
sslVerify = false),这会带来安全风险
什么时候该怀疑是 ca-bundle 问题?
当多个 Composer 命令(install、update、create-project)在不同包源上统一报 SSL 验证失败,且错误信息明确指向证书链(如 unable to verify the first certificate 或 self signed certificate in certificate chain),基本可锁定为 CA 信任问题。此时检查 ca-bundle 状态比排查网络或代理更高效。









