让 Composer 信任自签名证书需将证书加入系统或 PHP 的 CA 信任链。1. 推荐将证书(.crt/.pem)放入系统信任库:Linux 使用 update-ca-certificates,macOS 通过“钥匙串访问”设为“始终信任”,Windows 导入“受信任的根证书颁发机构”。2. 若无法修改系统,可配置 PHP 的 openssl.cafile 或 cainfo 指向包含自签名证书的自定义 CA bundle 文件并重启服务。3. 临时方案(不推荐生产):全局禁用 TLS 验证(composer config --global disable-tls true)或改用 HTTP。4. 高级用法可为特定仓库配置证书路径,但依赖 PHP 层支持。验证方法:运行 php -r "var_dump(openssl_get_cert_locations());" 确认证书位置生效。核心是确保 PHP SSL 扩展能验证通过,配置后 Composer 即可访问私有 HTTPS 仓库。

让 Composer 信任自签名的 HTTPS 证书源,关键在于将你的自签名证书添加到系统或 Composer 使用的 CA 信任链中。Composer 基于 PHP 的 cURL 或 Stream 扩展发起 HTTPS 请求,因此它依赖于底层 PHP 配置的证书验证机制。以下是几种可行的方法:
1. 将自签名证书添加到系统的可信根证书库
这是最推荐的方式,因为它对整个系统生效,适用于所有使用系统证书的应用(包括 Composer)。
Linux(以 Ubuntu/Debian 为例):
- 将你的自签名证书(通常是 .crt 或 .pem 文件)复制到 /usr/local/share/ca-certificates/ 目录下,例如:your-ca.crt
- 运行命令更新证书库:
sudo update-ca-certificates
完成后,系统会自动将该证书加入信任列表,PHP 和 Composer 都会识别。
macOS:
- 双击 .crt 文件,用“钥匙串访问”打开
- 选择“系统”钥匙串,导入证书
- 右键证书 → 显示简介 → 基本项 → 设置为“始终信任”
- 重启相关服务或终端
Windows:
- 使用 certmgr.msc 工具
- 将证书导入“受信任的根证书颁发机构”存储区
2. 配置 PHP 使用自定义 CA 包
如果你无法修改系统证书库,可以配置 PHP 使用一个包含你自签名证书的 CA bundle 文件。
- 创建一个证书包文件,例如:/path/to/custom-cacert.pem
- 将你的自签名证书内容追加到这个文件中(可基于 Mozilla 官方 ca-bundle 补充)
- 在 php.ini 中设置:
openssl.cafile=/path/to/custom-cacert.pem
或
cainfo=/path/to/custom-cacert.pem - 重启 Web 服务或 CLI 环境使配置生效
Composer 在运行时会读取此配置进行证书验证。
3. 临时禁用 SSL 验证(不推荐用于生产)
仅用于测试环境,存在安全风险。
- 通过 Composer 配置关闭 SSL 验证:
composer config --global disable-tls true - 或强制使用 HTTP(如果服务器支持):
composer config --global repo.packagist composer http://packagist.org
这些操作会让所有请求绕过证书检查,容易遭受中间人攻击。
4. 为特定仓库配置证书路径(高级)
Composer 支持为某个仓库指定证书,但实际依赖 PHP 的上下文,较难单独控制。更可靠的方式仍是确保系统或 PHP 层面已信任该证书。
你可以通过以下方式测试是否生效:
php -r "var_dump(openssl_get_cert_locations());"
查看当前 PHP 使用的证书位置。
基本上就这些。让 Composer 信任自签名证书的核心是让 PHP 的 SSL 扩展能验证通过,重点检查你的证书是否已正确部署到信任链中。配置完成后,Composer 就可以正常访问私有 HTTPS 仓库了。










