在我的 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 Storage,并以 https://myaccount.blob.core.windows.net
开头,因此我认为服务器 SSL 证书应该没有问题.
造成这种行为的原因是什么?
最佳答案
发生这种情况是因为您没有使用被认为值得信赖的 CA 证书配置curl,因此它无法验证远程服务器证书上的签名(尽管签名很可能是有效的)。
要验证签名,您应该适当设置 CURLOPT_CAINFO
或 CURLOPT_CAPATH
。
关于php - 为什么 cUrl 无法通过 HTTPS 下载,除非 CURLOPT_SSL_VERIFYPEER 设置为 "false"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135952/