在我的PHP代码中,我尝试从以https://
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curlHandle);
curl_close($curlHandle);
$response
恰好是FALSE
,除非我这样做:
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
在curl_exec()
致电之前。
我下载的URL来自Window Azure Blob存储,并以https://myaccount.blob.core.windows.net
开头,所以我假设服务器SSL证书应该没有问题。
这种行为的原因是什么?
答案 0 :(得分:4)
这是因为您没有使用被认为值得信任的CA证书配置curl,因此无法验证远程服务器证书上的签名(尽管签名很可能是有效的)。
要验证签名,您应该适当地设置CURLOPT_CAINFO
或CURLOPT_CAPATH
。
答案 1 :(得分:0)
仅供参考,Microsoft发布了一个SDK for PHP,可以为您处理所有这些内容,让您的代码更多地与Azure服务交互,而不是使用HTTP。