composer默认优先使用httpS,确保安全需配置仓库URL为https开头,禁用COMPOSER_DISABLE_NETWORK_FALLBACK防止回退HTTP,全局设置可信HTTPS镜像,并正确配置CA证书路径以避免降级风险。

Composer 默认会优先使用 HTTPS 协议下载依赖包,尤其是从 Packagist.org 安装时。但如果你发现某些请求被降级到 HTTP,或者你希望强制所有请求都通过 HTTPS(比如在企业环境或安全要求较高的场景),可以通过以下方式确保 Composer 始终使用 HTTPS。
1. 配置仓库使用 HTTPS
如果你在 composer.json 中自定义了仓库(repository),请确保其 URL 以 https:// 开头。
例如:
{ "repositories": [ { "type": "composer", "url": "https://packages.example.com" } ] }
避免使用 http://,否则 Composer 可能通过不安全的连接拉取数据。
2. 禁用 HTTP 回退机制
Composer 在某些情况下(如 HTTPS 不可用)可能会尝试回退到 HTTP。要防止这种情况,可通过设置环境变量来禁用不安全的传输:
export COMPOSER_DISABLE_NETWORK_FALLBACK=1
这个设置会让 Composer 在 HTTPS 失败时直接报错,而不是尝试使用 HTTP。
3. 强制全局使用安全协议
你可以通过 Composer 的全局配置命令,设置默认行为:
- 查看当前配置:
composer config --global --list - 确保没有配置任何 HTTP 地址作为默认仓库
- 可手动设置镜像为 HTTPS 版本,例如使用国内镜像时:
composer config --global repo.packagist composer https://packagist.phpcomposer.com
注意:该镜像已多年未维护,建议使用官方或可信的 HTTPS 镜像,如阿里云等提供的服务。
4. 检查 CA 证书配置
如果 HTTPS 请求失败,可能是因为系统缺少有效的 CA 证书。确保 PHP 配置中启用了正确的证书验证:
- 检查 php.ini 中是否设置了:
curl.cainfo = /path/to/cacert.pem - 或在 Composer 配置中指定证书路径:
composer config --global cafile "/path/to/cert.pem"
这能避免因证书问题导致 HTTPS 连接失败而被迫降级。
基本上就这些。Composer 本身设计上是偏向安全的,只要你不主动配置 HTTP 地址,并确保网络和证书环境正常,它就会坚持使用 HTTPS。关键是管好仓库地址、关闭回退、配好证书。