gpt4 book ai didi

PHP-curl 无法获取本地颁发者证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:50 24 4
gpt4 key购买 nike

我收到经典的 php curl 错误“无法获取本地颁发者证书”。以下是来自 curl 调试的更多信息:

Trying 133.7.42.21...

TCP_NODELAY set

Connected to example.adress.com (133.7.42.21) port 443 (#0)

  • ALPN, offering http/1.1
  • Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
  • successfully set certificate verify locations:
  • CAfile: C:\some_absolute_path\cacert.pem
  • CApath: none
  • SSL certificate problem: unable to get local issuer certificate

    Curl_http_done: called premature == 1\n* Closing connection 0\n

如您所见,我尝试使用来自 Mozilla. 的“cacert.pem”文件我尝试了所有方法,但都没有用。

PHP 代码:

        $curl = curl_init($location);
//set verifier from interface host
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);

//set host global certificate
curl_setopt($curl, CURLOPT_CAINFO, $globla_cert);

//set certificate
curl_setopt($curl, CURLOPT_SSLCERT, $ssl_cert);
//set private key
curl_setopt($curl, CURLOPT_SSLKEY, $ssl_cert_key);
//set private key password
curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $ssl_cert_password);

//set curl debug output
curl_setopt($curl, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($curl, CURLOPT_STDERR, $verbose);
//curl_setopt($curl, CURLINFO_HEADER_OUT, true);
//set ssl version
curl_setopt($curl, CURLOPT_SSLVERSION, 6);


curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT_MS, $connecttimeout);
$response = curl_exec($curl);

当我禁用 CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST 时,它可以在没有全局证书的情况下工作,但这是一个NOGO

我目前使用 XAMPP 和 PHP 版本 7.0.15。Apache 启用了 mod_ssl。PHP 启用了 openssl 和 curl 扩展。

我尝试过的事情:

  • 在php.ini里面设置路径:

    openssl.cainfo= "C:\some_absolute_path\cacert.pem"
    openssl.cafile= "C:\some_absolute_path\cacert.pem"

  • 将证书放入我使用 var_dump(openssl_get_cert_locations()); 获得的默认路径中那对我来说是“C:\openssl-1.0.2j-win32\ssl”。

  • 将证书丢到"C:\xampp\php"

现在我找不到我可以尝试的“修复”,有人知道它可能是什么吗?

最佳答案

问题已解决。

这不是技术问题。我收到的服务证书不再有效,新证书不在 Mozilla 的“cacert.pem”中和旧的一样。

关于PHP-curl 无法获取本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com