我已经在 stackoverflow 上尝试了很多选项来解决这个问题,不幸的是到目前为止没有任何效果。
它从 composer 安装开始。下面列出了我的环境详细信息:
- 操作系统:Windows 7
- PHP V 7.1.10,XAMPP 版本
我正在运行 MINGW64,(它是用 git v2.1.5 安装的)
curl --version
curl 7.56.1 (x86_64-w64-mingw32) libcurl/7.56.1 OpenSSL/1.0.2l (WinSSL) zlib/1.2.11 libidn2/2.0.4 libssh2/1.8.0 nghttp2/1.26.0
Release-Date: 2017-10-23
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy MultiSSL Metalink
现在看来 CURL
和 OpenSSL
已正确安装。
当我在做 composer require or install
时,报错如下:
我搜索并发现是本地证书问题,所以我从 https://curl.haxx.se/docs/caextract.html 下载了证书/ bundle ,将证书放在 C:\xampp\php\extras\ssl\
下并更改 PHP.ini
curl.cainfo="C:\xampp\apache\bin\curl-ca-bundle.crt" openssl.cafile="C:\xampp\php\extras\ssl\curl-ca-bundle.crt"
这从来没有奏效。然后我将我的证书放在 C:\Windows\System32\curl-ca-bundle.crt
下,更改了 ini 仍然没有用。
然后我从
下载了cacert.pem
并重复步骤以使其与 pem
文件一起使用。
但是,恐怕这里仍然没有成功。
谁能帮我这里发生了什么问题?在这个方向上的任何帮助都是很大的
赞赏。
最佳答案
这适用于 Windows
用户,使用 curl-7.57.0-win64-mingw
或类似版本。
我已经在另一个线程上分享过这个问题,但我认为 Windows 用户可能会偶然发现这个问题,而我的回答可能会有所帮助。因此,分享分步过程。
这个错误基本上意味着,curl 无法验证目标 URI 的证书。如果您信任证书 (CA) 的颁发者,则可以将其添加到受信任的证书列表中(例如,这是一个本地 IIS
证书,并且出于开发目的您信任它)。
为此,浏览 URI(例如在 Chrome 上)并按照步骤操作
- 右键单击地址栏上的
HTTPS
安全挂锁 🔒 图标 - 点击
certificate
,它会打开一个包含证书详细信息的窗口 - 转到“认证路径”标签
- 点击ROOT证书
- 点击
View Certificate
,会打开另一个证书窗口 - 转到
详细信息
标签 - 点击
复制到文件...
按钮,它会打开导出向导 - 点击
下一步
- 选择“Base-64 编码的 X.509 (.CER)”
- 点击
下一步
- 提供一个您可以记住的友好名称,例如'MyDomainX.cer'(浏览到所需目录)并保存
- 点击
下一步
- 点击
Finish
,保存证书文件
那么我们做了什么?
我们基本上将所需站点(我们实际上信任的站点)的根证书保存为本地文件。我们接下来做什么?
将该证书添加到可信证书列表
- 现在打开这个
.cer
文件并复制内容(包括-----BEGIN CERTIFICATE-----
和-----结束证书-----
) - 现在转到保存
curl.exe
的目录,例如C:\SomeFolder\curl-7.57.0-win64-mingw\bin
- 使用文本编辑器打开
curl-ca-bundle.crt
文件(右键单击并使用...打开) - 附加复制的证书文本到文件末尾。保存
我们现在做了什么?
我们将证书(内容)添加到 curl
的主证书包中。所以现在 curl
将识别此证书并允许该域。
现在您的命令应该可以在 curl
上正常执行。
关于Windows,cURL 60 无法获取本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434347/