Php 即使安装了捆绑包,也无法获取本地颁发者证书

Php 即使安装了捆绑包,也无法获取本地颁发者证书,php,ssl,curl,Php,Ssl,Curl,我知道这里已经有人问过类似的问题,但我认为我的问题不同。我正试图向propper SSL网站(它不是自签名的)发出一个curl请求。 我可以轻松设置选项,甚至可以将CA证书包导入到正确的位置。 我希望一切都很好,但我仍然得到: SSL certificate problem: unable to get local issuer certificate 我在这里和谷歌上到处看看,似乎无法解决这个问题。 这是我的卷发设置: $ch = curl_init(); curl_setopt($ch,

我知道这里已经有人问过类似的问题,但我认为我的问题不同。我正试图向propper SSL网站(它不是自签名的)发出一个curl请求。 我可以轻松设置选项,甚至可以将CA证书包导入到正确的位置。 我希望一切都很好,但我仍然得到:

SSL certificate problem: unable to get local issuer certificate
我在这里和谷歌上到处看看,似乎无法解决这个问题。 这是我的卷发设置:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CERTINFO, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd()."/cookie_jar");
curl_setopt($ch, CURLOPT_HEADER, true);

$result = curl_exec($ch);
Edit2:以下是请求的详细输出:

* Adding handle: conn: 0x3472770
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x3472770) send_pipe: 1, recv_pipe: 0
* About to connect() to www.caixagest.pt port 443 (#0)
*   Trying 195.234.134.196...
* Connected to www.caixagest.pt (195.234.134.196) port 443 (#0)
* error setting certificate verify locations:
  CAfile: C:\Winginx\ssl\certs\ca-bundle-old.crt
  CApath: none
* Closing connection 0


error setting certificate verify locations:
  CAfile: C:\Winginx\ssl\certs\ca-bundle-old.crt
  CApath: none

很难说没有URL、curl版本和编译选项以及CA包的内容,但最常见的情况是:

  • 服务器忘记包含重要的链证书。在使用进行分析时,请查找“链问题”和“额外下载”
  • 与curl的OpenSSL后端不同的信任路径。有关详细信息,请参阅
  • 旧的curl版本不支持SNI,所以服务器发送了错误的证书

您提供的更多信息可能会提供更详细的帮助。

它肯定不信任所提供的证书-这不是由解决的吗?以下是url:php版本是5.6.3,在xampp上运行,CA捆绑包是官方网站上的最新版本。该网站本身看起来不错,证书链也不错。您能否将CURLOPT_VERBOSE中的调试信息添加到问题中?你不会碰巧在SSL拦截防火墙后面吗?我该怎么做(显示详细的输出)?我对SSL很陌生。在家里,我负责bitdefender的互联网安全,所显示的CA证书来自bitdefender。然而,在工作中,结果是一样的。详细的输出可能在服务器日志中的某个地方。如果您有SSL拦截CA,则需要将其作为受信任的CA添加到证书包中,否则验证将失败。我在我的工作计算机上运行这个,它不在任何SSL拦截防火墙后面。