Composer中文镜像不支持包签名验证,仅做HTTP代理与缓存同步,不生成、不校验GPG签名;verify-checksums --strict仅校验dist.sha256哈希一致性,非签名信任链验证,需Composer≥2.5且lock文件含该字段。

Composer中文镜像不支持包签名验证
Composer中文镜像(如阿里云、腾讯云、华为云等)只做HTTP代理与缓存同步,**不提供也不参与任何GPG签名验证流程**。所谓“验证插件签名完整性”,在镜像场景下根本不存在——镜像源既不生成签名,也不校验签名,它只转发或缓存 Packagist 原始 dist 包或 metadata。
你看到的 composer install 成功,只是说明 ZIP 包解压后文件树哈希(dist.sha256)与 composer.lock 一致;这跟“签名”无关,是纯哈希完整性校验,且完全依赖 lock 文件里有没有该字段、是否走 dist 下载路径。
- 镜像不会添加、修改或验证
signature字段——Composer 官方至今(v2.7.x)根本不解析该字段 - 即使插件作者在 GitHub Release 页上传了
.asc签名文件,镜像也不会下载或比对 -
composer config --global signing-key https://packagist.org/keys.json只影响 Packagist 元数据 API 的响应签名验证,和镜像无关
verify-checksums --strict 能否替代签名验证?
不能替代,但可补位:它校验的是 vendor/ 目录当前状态是否与 composer.lock 中记录的 dist.sha256 一致,属于“静态快照比对”,不是“签名信任链验证”。
执行前必须确认三件事:
- Composer 版本 ≥ 2.5:
composer --version - 每次调用都带环境变量:
COMPOSER_EXPERIMENTAL=1 composer verify-checksums --strict -
composer.lock必须包含dist.sha256字段——旧版 Composer(sha1 或为空
注意:--strict 缺失会导致命令返回码为 0 即使校验失败,CI 流水线会静默通过。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
哪些中文插件根本无法被 verify-checksums 校验?
以下情况会导致 verify-checksums 直接跳过该包,不报错也不校验:
- 包类型为
"type": "package"或"type": "path"—— 这类包绕过 Packagist 元数据,lock 文件中无dist块 - 使用了
--prefer-source安装,或composer.json中配置了"preferred-install": {"*": "source"} - 镜像源未同步原始 dist 包哈希(常见于私有镜像或小众镜像),导致
composer.lock里的dist.sha256是空字符串或无效值
此时 verify-checksums 输出里不会出现该包名,容易误判为“全部通过”。需提前用 composer show --locked --format=json | jq '.packages[] | select(.dist == null or .dist.sha256 == null)' 扫描漏检项。
真正要验证插件作者身份,只能手动做 Git tag GPG 验证
如果插件托管在 GitHub/GitLab,且作者打了带 GPG 签名的 tag(如 v3.2.1),这才是唯一能确认“代码出自本人之手”的方式:
- 先查插件来源:
composer show --locked vendor/plugin-name --format=json | jq -r '.source.url' - 克隆仓库:
git clone <url> && cd <repo> - 导入作者公钥(需从官网或可信渠道获取
.asc文件):gpg --import author.pub.asc - 验证 tag:
git verify-tag v3.2.1—— 输出含gpg: Signature made ... using RSA key且无 warning 才可信
注意:composer install 和 verify-checksums 都不调用 git verify-tag,这步必须人工介入。很多热门中文插件(如 overtrue/wechat、laravel-s/laravel-s)虽打 tag,但未签名,此时“作者身份”实际不可证。

















