在php中,当CURLOPT_SSL_VERIFYPEER设置为true时,如果未设置CURLOPT_CAPATH将会发生什么

时间:2017-07-06 03:37:11

标签: php curl

问题是在PHP中使用curl。 其他一些答案说curl会拒绝任何ssl连接,但是,我可以照常发送https请求。 php.ini中的curl.cainfo未设置。 如果没有设置CURLOPT_CAPATH,curl会使用系统默认的ca包吗?

2 个答案:

答案 0 :(得分:1)

来自文档:

CURLOPT_CAINFO

This option is by default set to the system path where 
libcurl's cacert bundle is assumed to be stored, as 
established at build time.

因此,如果您的系统将cacert包存储在默认位置(可能是/ etc / ssl / certs /),那么它应该找到它。

答案 1 :(得分:1)

您可以在这里使用CURLOPT_CAPATH,如下所示。

  

您必须在此行SSL

中提供curl_setopt($curl_handle, CURLOPT_CAINFO, "/etc/pki/tls/cert.pem");证书的路径
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$link);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle, CURLOPT_VERBOSE, true);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_handle, CURLOPT_CAINFO, "/etc/pki/tls/cert.pem");
$buffer = curl_exec($curl_handle);
$buffer_decode = json_decode($buffer);
curl_close($curl_handle);