Windows,cURL 60 无法获得本地颁发者证书

SAM*_*SAM 5 windows curl composer-php php-7

我已经在 stackoverflow 上尝试了很多可用于解决此问题的选项,不幸的是,到目前为止,没有任何方法对我有用。

它从 Composer 安装开始。我的环境详细信息如下所列:

  1. 操作系统:Windows 7
  2. PHP V 7.1.10,XAMPP 版本
  3. 我正在运行 MINGW64,(它是用 git v2.1.5 安装的)

    卷曲 --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

    发布日期:2017-10-23

    协议: dict 文件 ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp

    特性: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy MultiSSL Metalink

现在,这里似乎CURLOpenSSL被正确安装。当我这样做时,composer require or install它向我报告了如下错误: 在此处输入图片说明

我搜索并发现它是本地证书问题,所以我从https://curl.haxx.se/docs/caextract.html下载了证书/捆绑包,将证书放在下面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

https://gist.github.com/VersatilityWerks/5719158/download

并重复步骤使其与pem文件一起工作。不过这里恐怕还是没有成功。任何人都可以帮助我这里发生了什么事吗?非常感谢这方面的任何帮助。

Arg*_*a C 6

这是针对Windows用户,使用curl-7.57.0-win64-mingw或类似版本。

我已经在另一个线程上分享了这个,但我认为 Windows 用户可能会偶然发现这个问题,我的回答可能会有所帮助。所以,分享一步一步的过程。

这个错误基本上意味着,curl 无法验证目标 URI 的证书。如果您信任证书 (CA) 的颁发者,您可以将其添加到受信任证书列表中(例如,这是一个本地IIS证书,您出于开发目的信任它)。

为此,浏览 URI(例如在 Chrome 上)并按照步骤操作

  1. 右键单击HTTPS地址栏上的安全挂锁图标
  2. 单击certificate,它将打开一个包含证书详细信息的窗口
  3. 转到“认证路径”选项卡
  4. 点击ROOT证书
  5. 单击View Certificate,它将打开另一个证书窗口
  6. 转到Details选项卡
  7. 单击Copy to File...按钮,它将打开导出向导
  8. 点击 Next
  9. 选择“Base-64 编码的 X.509 (.CER)”
  10. 点击 Next
  11. 提供一个您可以记住的友好名称,例如“MyDomainX.cer”(浏览到所需目录)并保存
  12. 点击 Next
  13. 单击Finish,它将保存证书文件

那我们做了什么?

我们基本上将所需站点(我们实际信任的站点)的根证书保存为本地文件。我们下一步怎么办?

将该证书添加到受信任证书列表中

  1. 现在打开这个.cer文件并复制内容(包括-----BEGIN CERTIFICATE----------END CERTIFICATE-----
  2. 现在转到curl.exe保存的目录,例如C:\SomeFolder\curl-7.57.0-win64-mingw\bin
  3. curl-ca-bundle.crt使用文本编辑器打开文件(右键单击并打开...)
  4. 复制的证书文本附加到文件末尾。节省

我们现在做了什么?

我们将证书(内容)添加到curl的主证书包中。所以现在curl将识别此证书并允许域。

现在您的命令应该在curl.


小智 5

只是为了后代而将其发布在这里,因为我花了过去 2 个小时在这上面。注意:仅在 Windows 上测试。

  1. 确保你有包含 ssl 的curl版本(最新的exe安装程序有它)
  2. 从http://curl.haxx.se/docs/caextract.html下载 cacert.pem
  3. 将 cacert.pem 重命名为curl-ca-bundle.crt
  4. 将 cacert.pem 文件移动到curl.exe 目录。

固定的。