PHP / curl - SSL证书错误 - 无法获得本地颁发者证书

时间:2016-09-14 14:05:52

标签: php ssl curl https php-5.5

我正在尝试通过PHP / curl(PHP 5.5.3)登录银行的网站来下载交易。我刚开始卷曲,所以我想弄清楚如何首先登录该网站。

当前代码:

$postinfo = 'username=' . $username . '&password=' . $password;

$curl = curl_init();
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_NOBODY, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_CAINFO, getcwd() . '\certificateCA.cer');

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postinfo);

$content = curl_exec($curl);

if(false == $content){
    echo curl_error($curl);
}
curl_close($curl);


print $content;

问题

我收到以下错误:

“SSL证书问题:无法获取本地颁发者证书”

我做了什么

到目前为止,我已尝试根据this SO question的答案获取远程站点的证书。这似乎有所帮助,因为在我收到不同的错误之前(“错误设置证书验证位置”)。我的代码中引用的certificateCA.cer是我从远程站点(银行)下载的证书,通过选择导出“Base-64编码的X.509(.CER)”选项。

由于我当前的问题似乎与本地证书有关,而不是远程证书,我已尝试从此处获取最新信息:https://curl.haxx.se/ca/cacert.pemSO answer

我在php.ini文件中添加了以下行,并按this SO answer重新启动了Apache:

curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
openssl.cafile = "C:\xampp\php\extras\ssl\cacert.pem"

this SO response,我也尝试更改文件名和对此的引用:

curl.cainfo = "C:\xampp\php\extras\ssl\ssl.txt"
openssl.cafile = "C:\xampp\php\extras\ssl\ssl.txt"

你如何帮助我

  1. 请帮助我理解CURLOPT_CAINFO。这是期望远程站点的证书,还是本地机器?似乎它正在寻找基于添加该证书后错误消失的远程站点证书,但是从文档中确切地知道它的期望是什么。
  2. 一种解决方案,甚至是一种方法,通过这种方法我可以对此问题进行分类并自行查找解决方案。似乎在链接的SO问题上对其他人有用的东西对我不起作用,所以我做错了。

0 个答案:

没有答案