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