[PHP] curl访问https与CA证书问题
程序员文章站
2022-04-28 14:02:58
CA证书,用来在调用HTTPS资源的时候,验证对方网站是否是CA颁布的证书,而不是自己随便生成的 curl命令1.需要下载CA证书 文件地址是 http://curl.haxx.se/ca/cacert.pem2.把下载的文件放到这个位置 /etc/pki/tls/certs/ca-bundle.c ......
ca证书,用来在调用https资源的时候,验证对方网站是否是ca颁布的证书,而不是自己随便生成的
curl命令
1.需要下载ca证书 文件地址是 http://curl.haxx.se/ca/cacert.pem
2.把下载的文件放到这个位置 /etc/pki/tls/certs/ca-bundle.crt
3.curl就可以访问https的资源了
php代码
function post($url, $data=array(), $refer = "", $timeout = 30, $header = array()){
$curlobj = curl_init();
$ssl = stripos($url,'https://') === 0 ? true : false;
$options = array(
curlopt_url => $url,
curlopt_returntransfer => 1,
curlopt_post => 1,
curlopt_postfields => $data,
curlopt_followlocation => 1,
curlopt_autoreferer => 1,
curlopt_useragent => 'webface selfservice form',
curlopt_timeout => $timeout,
curlopt_http_version => curl_http_version_1_0,
curlopt_ipresolve => curl_ipresolve_v4,
curlopt_referer => $refer
);
if (!empty($header)) {
$options[curlopt_httpheader] = $header;
}
if ($refer) {
$options[curlopt_referer] = $refer;
}
if ($ssl) {
//注意看这里就是配置ca证书
//只信任ca颁布的证书
$options[curlopt_ssl_verifypeer]=true;
//本地ca证书,用来验证网站的证书是否是ca颁布的
$options[curlopt_cainfo]=getcwd() . '/cacert.pem';
//验证域名是否匹配
$options[curlopt_ssl_verifyhost] = 2;
/*
//忽略证书验证,信任任何证书
$options[curlopt_ssl_verifyhost] = false;
$options[curlopt_ssl_verifypeer] = false;
*/
}
curl_setopt_array($curlobj, $options);
$returndata = curl_exec($curlobj);
if (curl_errno($curlobj)) {
$returndata = curl_error($curlobj);
}
curl_close($curlobj);
return $returndata;
}
$res=post("https://www.baidu.com");
var_dump($res);
推荐阅读
-
php curl访问HTTPS页面出现502问题的解决办法
-
[PHP] curl访问https与CA证书问题
-
php curl访问HTTPS页面出现502问题的解决办法
-
php curl https ssl 证书问题
-
php curl https ssl 证书问题
-
源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题
-
[PHP] curl访问https与CA证书问题
-
源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502异常的有关问题
-
源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题
-
php中curl访问https与CA证书(代码示例)