执行laravel new app时遇curl error 60 SSL证书匹配问题求助
Laravel new 命令报curl error 60(SSL证书不匹配)问题排查与解决
报错信息
执行 laravel new app 时出现如下错误:
Failed to download laravel/laravel from dist: curl error 60 while downloading https://codeload.github.com/laravel/laravel/legacy.zip/37ab32cf760406f767f6a278748546214585c93f: SSL: no alternative certificate subject name matches target host name 'codeload.github.com'
直接访问 codeload.github.com 时浏览器提示页面不安全。
Composer 诊断结果
执行 composer diagnose --vvv 输出如下:
Running 2.5.4 (2023-02-15 13:10:06) with PHP 8.2.0 on Windows NT / 10.0 Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json Reading C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json) Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json Loading config file C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json) Loading config file C:\Users\Admin\AppData\Roaming\Composer\auth.json Reading C:\Users\Admin\AppData\Roaming\Composer\auth.json (C:\Users\Admin\AppData\Roaming\Composer\auth.json) Checked CA file C:\xampp\apache\bin\curl-ca-bundle.crt: valid Executing command (C:/Users/Admin/AppData/Roaming/Composer): git branch -a --no-color --no-abbrev -v Executing command (C:/Users/Admin/AppData/Roaming/Composer): git describe --exact-match --tags Executing command (CWD): git --version Executing command (C:/Users/Admin/AppData/Roaming/Composer): git log --pretty="%H" -n1 HEAD --no-show-signature Executing command (C:/Users/Admin/AppData/Roaming/Composer): hg branch Executing command (C:/Users/Admin/AppData/Roaming/Composer): fossil branch list Executing command (C:/Users/Admin/AppData/Roaming/Composer): fossil tag list Executing command (C:/Users/Admin/AppData/Roaming/Composer): svn info --xml Reading C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json) Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json Loading config file C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json) Loading config file C:\Users\Admin\AppData\Roaming\Composer\auth.json Reading C:\Users\Admin\AppData\Roaming\Composer\auth.json (C:\Users\Admin\AppData\Roaming\Composer\auth.json) Reading C:/Users/Admin/AppData/Roaming/Composer/composer.lock (C:\Users\Admin\AppData\Roaming\Composer\composer.lock) Reading C:/Users/Admin/AppData/Roaming/Composer/vendor/composer/installed.json (C:\Users\Admin\AppData\Roaming\Composer\vendor\composer\installed.json) Reading C:/Users/Admin/AppData/Roaming/Composer/vendor/composer/installed.json (C:\Users\Admin\AppData\Roaming\Composer\vendor\composer\installed.json) Checking platform settings: OK Checking git settings: Executing command (CWD): git config color.ui OK git version 2.39.2 Checking http connectivity to packagist: Downloading http://repo.packagist.org/packages.json [200] http://repo.packagist.org/packages.json OK Checking https connectivity to packagist: Downloading https://repo.packagist.org/packages.json [200] https://repo.packagist.org/packages.json OK Checking github.com rate limit: Downloading https://api.github.com/rate_limit [200] https://api.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: Downloading https://getcomposer.org/versions [200] https://getcomposer.org/versions OK Composer version: 2.5.4 PHP version: 8.2.0 PHP binary path: C:\xampp\php\php.exe OpenSSL version: OpenSSL 3.0.7 1 Nov 2022 cURL version: 7.85.0 libz 1.2.12 ssl OpenSSL/3.0.7 zip: extension present, unzip not available, 7-Zip not available
已尝试的操作
- 下载了CA证书文件,在
php.ini中添加如下配置,但问题未解决:
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo="C:\xampp\apache\bin\curl-ca-bundle.crt" curl.cainfo="C:\xampp\php\extras\ssl\cacert.pem"
解决方案
1. 修复php.ini重复配置
你在php.ini中重复设置了curl.cainfo,仅最后一行会生效。需调整为:
- 删除其中一行
curl.cainfo配置,保留指向cacert.pem的条目。 - 新增
openssl.cafile配置,确保OpenSSL也使用同一证书:
[curl] curl.cainfo="C:\xampp\php\extras\ssl\cacert.pem" [openssl] openssl.cafile="C:\xampp\php\extras\ssl\cacert.pem"
修改后重启Apache/PHP服务。
2. 排查DNS解析问题
证书主体不匹配的核心原因大概率是DNS解析错误,导致codeload.github.com指向了非官方IP:
- 执行
ping codeload.github.com,检查返回IP是否属于GitHub官方IP段。 - 若IP异常,切换DNS服务器(如114.114.114.114或8.8.8.8),然后刷新DNS缓存:
ipconfig /flushdns
3. 临时绕过SSL验证(应急方案)
若以上方法无效,可临时让Laravel安装器跳过SSL验证(不推荐长期使用):
laravel new app --insecure
4. 手动安装Laravel
如果网络问题无法解决,可手动完成安装:
- 下载Laravel仓库的压缩包并解压到目标目录。
- 进入目录执行
composer install安装依赖。
内容的提问来源于stack exchange,提问作者patso
相关产品推荐
相关产品推荐

