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

时间:2017-11-22 12:08:14

标签: windows curl composer-php php-7

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

首先是作曲家安装。我的环境详情如下:

  1. 操作系统:Windows 7
  2. PHP V 7.1.10,XAMPP版本
  3. 我正在运行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

         

    发布日期: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大文件SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS代理MultiSSL Metalink

  4. 现在,CURL似乎正确安装了OpenSSL。 当我做composer require or install时,我报告错误如下: enter image description here

    我搜索并发现它是本地证书问题所以我从https://curl.haxx.se/docs/caextract.html下载了证书/捆绑包,将证书放在C:\xampp\php\extras\ssl\下并更改了PHP.ini

      

    curl.cainfo =" C:\ XAMPP \ apache的\ BIN \卷曲-CA-bundle.crt"   openssl.cafile =" C:\ XAMPP \ PHP \额外\ SSL \卷曲-CA-bundle.crt"

    这从未奏效。然后我将我的证书放在C:\Windows\System32\curl-ca-bundle.crt下,更改了ini仍然没有工作。

    然后我从

    下载了cacert.pem
      

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

    并重复执行以使其与pem文件一起使用的步骤。 但是我恐怕在这里仍然没有成功。 任何人都可以帮我解决这里发生的错误吗?这方面的任何帮助都很多 赞赏。

2 个答案:

答案 0 :(得分:2)

刚刚在这里为后人发布这篇文章,因为我花了最后2个小时来做​​这件事。 注意:仅在Windows上测试。

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

答案 1 :(得分:1)

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

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

此错误基本上意味着,curl无法验证目标URI的证书。如果您信任证书(CA)的颁发者,则可以将其添加到受信任证书的列表中。

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

  1. 右键单击安全挂锁图标
  2. 单击证书,这将打开一个窗口,其中包含证书详细信息
  3. 转到“证书路径”标签
  4. 点击ROOT证书
  5. 点击查看证书,它将打开另一个证书窗口
  6. 转到“详细信息”标签
  7. 单击“复制到文件”,它将打开导出向导
  8. 单击下一步
  9. 选择“ Base-64编码的X.509(.CER)”
  10. 单击下一步
  11. 给出一个友好的名称,例如“ MyDomainX.cer”(浏览到所需目录)
  12. 单击下一步
  13. 单击“完成”,它将保存证书文件
  14. 现在打开此.cer文件并复制内容(包括----- BEGIN CERTIFICATE -----和----- END CERTIFICATE -----)
  15. 现在转到保存curl.exe的目录,例如C:\SomeFolder\curl-7.57.0-win64-mingw\bin
  16. 使用文本编辑器打开curl-ca-bundle.crt文件
  17. 将复制的证书文本追加到文件末尾。保存

现在,您的命令应该可以在curl中正常执行。