Composer的self-update通过内置公钥验证官方GPG签名和SHA-384哈希,确保更新文件完整性与来源可信,防止中间人攻击,前提是初始安装可信。

Composer 的 self-update 命令在更新自身时,会通过签名验证来确保下载文件的完整性与来源可信,防止中间人攻击或文件被篡改。
下载过程中的完整性保护机制
Composer 使用公钥基础设施(PKI)对发布的 PHAR 文件进行签名,并在更新时验证该签名:
- 官方发布的 Composer PHAR 文件附带一个 SHA-384 哈希值和一个 GPG 签名文件(.sig)
- 执行 composer self-update 时,Composer 会从官网下载新版本的 PHAR 和对应的签名
- 内置的公钥用于验证签名是否由 Composer 官方私钥生成,确认文件来源真实
- 只有签名验证通过后,更新才会应用到本地可执行文件
本地环境的信任链
Composer 安装时会嵌入受信任的公钥。这个公钥用来验证后续所有更新的合法性:
- 首次安装应通过官方推荐方式(如 php -r "copy()..." 配合验证脚本),确保初始二进制可信
- self-update 不依赖 HTTPS 单层保护,而是结合数字签名提供端到端安全
- 如果签名不匹配或哈希校验失败,更新将中止并报错
手动验证方法(可选加强)
你也可以手动检查更新包的完整性,特别是在敏感环境中:
- 访问 https://www.php.cn/link/594ca739e3609243a6b6a3dd8d871114 获取最新版本的 SHA-384 校验值
- 使用命令 shasum -a 384 composer.phar 计算本地文件哈希并比对
- 高级用户可用 GPG 工具导入 Composer 公钥并手动验证签名
基本上就这些。Composer 的 self-update 通过签名验证保障了更新过程的安全性,只要初始安装可信,后续更新就能有效防篡改。









