我正在使用 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);
当我使用来自 http://curl.haxx.se/docs/caextract.html 的 CURLOPT_CAINFO
和 cacert.pem
时它有效,我得到:
PayPal_Connection_OK
当我不使用 CURLOPT_CAINFO
时,我得到这个错误:
SSL certificate problem: unable to get local issuer certificate
我试过这个:
- MMC
- 文件 > 添加/删除管理单元
- 证书(本地计算机)
- 受信任的根证书颁发机构 > 证书
- 所有任务 > 导入
- 选择
cacert.pem
- 消息:“导入成功”
但是这没有什么区别,我仍然必须使用 CURLOPT_CAINFO
才能工作。
有什么方法可以在我们的 Windows 服务器上安装所有这些根证书,这样我就不必在每次调用时都使用 CURLOPT_CAINFO
和 cacert.pem
让..?
最佳答案
您可以利用 php.ini 设置 cacert.pem 所在位置的绝对路径。
指令是curl.cainfo
设置它,或者至少读取它的值并将您的文件放在正确的位置。
关于php - 证书 CA 捆绑文件 : PEM - PHP/cURL - Local install.。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35059118/