当前位置: 移动技术网 > IT编程>开发语言>PHP > [PHP] curl访问https与CA证书问题

[PHP] curl访问https与CA证书问题

2019年03月14日  | 移动技术网IT编程  | 我要评论

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);

  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网