必须将 secure-http 设为 true 以强制 HTTPS,防止中间人篡改;URL 必须以 https:// 开头且结尾带 /;还需启用 security.signature-verification true 并验证 signature verification: OK 才能防供应链投毒。

secure-http 配置必须为 true 才能强制走 HTTPS
Composer 默认开启 secure-http,但一旦被手动设为 false,它就会允许 HTTP 协议的镜像源(比如 http://packagist.phpcomposer.com),导致元数据可被中间人篡改。这不是“连不上”的问题,而是安全链路被主动切断。
检查当前值:composer config -g secure-http,输出应为 true。若为 false 或无输出,立即执行:composer config -g secure-http true
- 该配置影响所有源(包括自定义
repositories),只要 URL 是http://就会被拒绝 - 如果项目级
composer.json里有"secure-http": false,它会覆盖全局设置,需手动删掉 - 某些旧教程教用
http://镜像加速,实则打开供应链攻击入口,切勿照搬
镜像源 URL 必须以 https:// 开头,且末尾带 /
仅把 repo.packagist 指向 https://mirrors.aliyun.com/composer/ 不够,URL 缺少末尾 / 会导致 Invalid repository type 错误;而用 http:// 则直接触发 secure-http 拒绝。
正确写法(腾讯云镜像):composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
- 阿里云、华为云、清华源等主流镜像均已支持 HTTPS,优先选带
https://的地址 - 配置后务必运行
composer clear-cache,否则旧的 HTTP 元数据可能仍被缓存使用 - 若项目
composer.json中已有repositories字段,它会屏蔽全局镜像,需临时注释或删除再验证
ssl.cafile 配置错误会导致 HTTPS 握手失败,而非连接超时
私有仓库或企业内网使用自签名证书时,cURL error 60: SSL certificate problem 表示 Composer 无法验证服务端证书——不是网络不通,是证书链不完整或路径不可读。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
关键点:composer config --global ssl.cafile /path/to/ca-bundle.pem 中的文件必须:
- 是 PEM 格式(以
-----BEGIN CERTIFICATE-----开头),不能是 DER 或 Windows.cer - 包含完整证书链:中间 CA 在前、根 CA 在后;用
cat intermediate.pem root.pem > bundle.pem拼接最稳妥 - PHP 进程有读权限(尤其在 nginx/php-fpm 下,
www-data用户常无权读取家目录) - Composer ≥2.5 版本会先尝试加载该文件,失败则静默 fallback 到系统 CA,不会报错——所以没反应 ≠ 配置生效
启用 signature verification 才算真正防投毒
只开 HTTPS 不等于安全。国内镜像若通过 composer config -g repo.packagist composer https://... 完全替换官方源,会跳过 Packagist 的包签名验证,失去完整性校验能力。
安全做法是保留官方源 + 启用签名验证 + 仅代理元数据:
- 执行:
composer config -g security.signature true - 再配置可信镜像(仅用于
packages.json等元数据):composer config -g repos.packagist.type composer,然后composer config -g repos.packagist.url https://mirrors.aliyun.com/composer/ - 验证:
composer diagnose输出中必须同时出现secure-http: OK和signature verification: OK
这一步最容易被跳过:很多人以为换镜像+开 HTTPS 就万事大吉,其实签名验证才是防供应链投毒的最后一道锁。没它,恶意包可以悄无声息混进 vendor/。

















