将自签名证书添加到系统CA库或配置PHP信任链是让Composer信任HTTPS证书的核心方法。1. 将.crt文件复制到系统证书目录并运行sudo update-ca-certificates更新信任链;2. 在php.ini中设置openssl.cafile或curl.cainfo指向证书文件以启用全局信任;3. 仅限测试环境,在composer.json中为特定仓库设置"verify_peer": false临时关闭验证;4. 使用composer config --global cafile指定全局证书路径。推荐优先采用系统级或PHP级证书信任,避免安全风险。

让 Composer 信任自签名的 HTTPS 证书,关键在于将你的自签名证书添加到 PHP 或系统信任的根证书中,或配置 Composer 跳过特定域名的 SSL 验证。以下是几种可行的方法:
1. 将自签名证书添加到系统的 CA 证书库
Composer 使用 PHP 的 OpenSSL 扩展进行 HTTPS 请求,而 OpenSSL 默认依赖系统的证书信任链。
- 将你的自签名证书(通常是 .crt 文件)复制到系统的证书目录,例如 Linux 上的 /usr/local/share/ca-certificates/
- 运行命令更新证书:在 Debian/Ubuntu 系统上执行 sudo update-ca-certificates
- 在 CentOS/RHEL 上可能需要手动合并到 /etc/pki/tls/certs/ca-bundle.crt
完成后,PHP 和 Composer 会自动信任该证书。
2. 配置 php.ini 使用自定义 cafile
如果你无法修改系统证书库,可以指定 PHP 使用额外的证书文件。
- 找到你的 php.ini 文件(可通过 php --ini 查看路径)
- 设置 openssl.cafile 指向你的证书文件,例如:
openssl.cafile=/path/to/your/certificate.crt - 或使用 curl.cainfo 设置相同的路径
- 保存并重启相关服务(如 CLI 或 Web 服务器)
这样 PHP 的所有 HTTPS 请求都会信任你提供的证书。
3. 在 composer.json 中禁用特定仓库的 SSL 验证(不推荐用于生产)
仅用于测试环境,可临时关闭某私有仓库的证书验证。
- 在项目的 composer.json 中添加仓库配置:
"repositories": [
{
"type": "composer",
"url": "https://your-private-repo.com",
"options": {
"ssl": {
"verify_peer": false,
"verify_peer_name": false
}
}
}
]
- 这会让 Composer 忽略该地址的证书错误,但存在安全风险
4. 设置 COMPOSER_HOME 和全局配置
如果你想为所有项目统一处理,可以配置全局选项。
- 使用命令设置全局 cafile:
composer config --global cafile /path/to/your/cert.pem - 或设置整个目录:
composer config --global capath /etc/ssl/certs
Composer 会优先使用这些配置进行 SSL 验证。
基本上就这些方法。最安全的方式是把证书加入系统或 PHP 的信任链,避免关闭验证。如果只是开发环境临时使用,可考虑禁用校验,但上线前务必恢复。










