事实
我在Win 10笔记本电脑上有Apache / 2.4.27(Win64)PHP / 7.2.0beta3。我想实现cURL。这是我的代码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.youtube.com');
curl_exec($curl);
if (curl_errno ( $curl )) {
echo curl_error ( $curl );
curl_close ( $curl );
}
生成错误SSL certificate problem: unable to get local issuer certificate
。所以我从https://curl.haxx.se/ca/cacert.pem下载了证书。取了cacert.pem文件,把它放在PHP文件夹中,然后像这样编辑php.ini
文件
curl.cainfo = C:php/ext/cacert.pem
。
问题
现在我收到此错误error setting certificate verify locations: CAfile: C:php/ext/cacert.pem CApath: none
。我用谷歌搜索,我找到的唯一解决方案是我必须从我想要的网站下载.crt
文件并将其包含在我的cURL中,如curl_setopt($curl, CURLOPT_CAINFO, "C:/wamp64/www/GIAG2.crt");
。
问题1.1 :
我不知道如何下载.crt
文件,所以我可以将它包含在我的代码中,如上例所示。
问题1.2 :这不是一个“通用”解决方案,我想设置我的证书,以便我不必为不同的网站下载不同的证书。
谢谢
答案 0 :(得分:1)
cURL提供的当前CA Cert摘录包含签署Google的CA证书的GeoTrust Global CA证书颁发机构,后者又签署了YouTube的证书,因此您应该没有问题。你有档案。
根据上一个错误,问题似乎是因为您在/
之后错过了C:
。消息error setting certificate verify locations
表示它无法打开或读取curl.cainfo
指定的文件,因此它根本找不到任何证书。
如果您将C:php/ext/cacert.pem
更改为C:/php/ext/cacert.pem
,则应该能够正确读取CA文件,然后正确验证该网站。
答案 1 :(得分:-1)
最简单的方法是跳过此检查。
@Rule
public WireMockRule wireMockRule = new WireMockRule(options().port(8888).httpsPort(8889));