我正在尝试通过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.pem每SO 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"
你如何帮助我
CURLOPT_CAINFO
。这是期望远程站点的证书,还是本地机器?似乎它正在寻找基于添加该证书后错误消失的远程站点证书,但是从文档中确切地知道它的期望是什么。