Composer Curl 错误 60:SSL 证书问题:无法获取本地颁发者证书

Composer Curl error 60: SSL certificate problem: unable to get local issuer certificate

我正在尝试让 composer 在使用代理的远程 Windows 机器上工作,但在执行 composer install/update:[=20= 时我总是会遇到此错误]

[Composer\Downloader\TransportException] curl error 60 while downloading https://flex.symfony.com/versions.json: SSL certificate problem: unable to get local issuer certificate

这是我的 composer.bat:

@echo OFF
:: in case DelayedExpansion is on and a path contains ! 
setlocal DISABLEDELAYEDEXPANSION
set HTTP_PROXY=<proxyurl>
php "%~dp0composer.phar" %*

显然需要设置代理,如果我删除该行,错误变为:

[Composer\Downloader\TransportException] curl error 28 while downloading https://flex.symfony.com/versions.json: Operation timed out after 10000 milliseconds with 0 out of 0 bytes received

composer diag 给我这个(设置了代理):

Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking HTTP proxy: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 2.0.9
PHP version: 7.4.7
PHP binary path: C:\Program Files\PHP\current\php.exe
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020
cURL version: 7.69.1 libz 1.2.11 ssl OpenSSL/1.1.1g
zip: extension present, unzip not available

我看过很多 post 和教程,但 none 的答案对我有用。 (有些只是关于卷曲,它是关闭证书检查的选项,但这对作曲家不起作用)。这是我尝试过的:

所有这些都不起作用,错误仍然存​​在。 然后我找到了一个 post,它在 composer.json 中设置了一个存储库,并明确地为该存储库设置了证书文件,所以我也尝试了它并将其添加到我的 composer.json:

{
  "repositories": [{
    "type": "composer",
    "url": "https://flex.symfony.com",
    "options" : {
      "ssl" : {
        "cafile" : "cacert.pem"
      }
    }
  }]
}

文件“cacert.pem”和我的composer.json在同一个目录下,现在错误是这样的:

[Composer\Downloader\TransportException] The "https://flex.symfony.com/packages.json" file could not be downloaded (HTTP/2 404 )

这并不奇怪,因为尝试通过浏览器访问“https://flex.symfony.com/packages.json”也会给我一个 404。(不要不知道突然无法加载“packages.json”是否有所不同,而证书错误抱怨“versions.json”,不知道先加载哪个,如果这个错误是一个“好”的迹象。)

这个反复试验的旅程已经进行了好几天,我没有想法,所以非常感谢任何帮助!

进一步的研究使我找到了代理,即 ZScaler,这是问题所在。如 this post 所述,ZScaler 拦截 SSL 流量并使用其自己的不受信任的证书对其重新加密,因此 Composer(或任何其他通过 https 访问站点的程序)将抱怨上述错误它是“无法获得本地颁发者证书”。

所以解决方案必须是让“ZScaler 中间根 CA”在服务器上得到信任。 (由于公司政策,我不能自己做,但任何正在寻找上述问题解决方案的人现在可能已经有了另一个提示。)

我不知道你的问题是否和我刚遇到的问题一样。但我通过在 cmd:

中执行这个解决了它
composer config -g -- disable-tls false

反正我在用 wamp。

是的,如果系统未连接到公司为安全而安装的 Zscaler,有时会遇到此问题。连接 Zscaler 并重新 运行 命令。问题将得到解决。

在使用 composer config -g secure-http false 并使用 composer clearcache 清除我的作曲家缓存后,使用 WAMP 服务器解决了我的问题。

看来你走错路了

如果您使用的是 PHP 版本 php7.4.21

正确:Applications/MAMP/bin/php/php7.4.21

错误:Applications/MAMP/config/php7.4.21

https://asset-packagist.org could not be fully loaded (curl error 60 while downloading https://asset-packagist.org/packages.json: SSL certificate problem: certificate has expired), package information was loaded from the local cache and may be out of date

我在 composer install Yii2 项目操作系统 WindowsWamp
上遇到这个问题 我在 Wamp
上使用此视频 SSL certificate 更新了证书 最后仍然面临同样的问题我使用命令 composer self-update 更新作曲家一切正常我将作曲家版本从 2.1.8 更新到 2.2.7

更新密钥使用:

composer self-update --update-keys

然后按照说明进行操作(复制并粘贴 https://composer.github.io/pubkeys.html 中的密钥)

如果您使用 symfony/flex 早于 1.17.1 的版本:

composer show symfony/flex

然后你需要更新它:

composer update symfony/flex --no-plugins --no-scripts

Source