证书 CA 捆绑包文件:PEM - PHP/cURL - 本地安装


Certificate CA bundle file: PEM - PHP/cURL - Local install..?

我正在使用Windows Server 2008 R2(带有IIS),PHP 5.6.0和cURL 7.36.0来测试PayPal的TLS测试URL:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://tlstest.paypal.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLVERSION_TLSv1_2
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . ''cacert.pem');
$result = curl_exec($ch);
curl_close($ch);

当我使用CURLOPT_CAINFO和 http://curl.haxx.se/docs/caextract.html cacert.pem时,它可以工作,我得到:

PayPal_连接_确定

当我不使用CURLOPT_CAINFO时,我会收到此错误:

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

我试过这个:

  1. 毫米碳
  2. 文件>添加/删除管理单元
  3. 证书(本地计算机)
  4. 受信任的根证书颁发机构>证书
  5. 导入>的所有任务
  6. 选择cacert.pem
  7. 消息:"导入成功"

但是这没有任何区别,我仍然必须使用CURLOPT_CAINFO才能工作。

有什么方法可以在我们的Windows服务器上安装所有这些根证书,这样我就不必在每次调用时使用CURLOPT_CAINFOcacert.pem..?

你可以利用你的php.ini来设置cacert.pem所在的绝对路径。

该指令是curl.cainfo

设置它,或者至少读取它的值并将文件放在正确的位置。

看:http://php.net/manual/en/curl.configuration.php