CURL命令忽略https请求的SSL证书

在使用wget命令来获取文件的时候,我们可以使用wget命令的 –-no-check-certificate 选项来忽略证书的认证。 那么在执行curl命令是否也可以忽略SSL证书的警告信息呢。
当然是有的,我们可以在执行curl 命令的时候,使用 -k 或者 –insecure 选项,来忽略签名认证的警告。 这样就可以让curl命令执行不安全的SSL连接,进而去获取数据。
命令使用示例如下:
curl -k https://osetc.com
curl --insecure https://www.osetc.com
在php中我们通过curl来实现post 和get请求的时候,也可以忽略SSL证书的验证,大家可以参考下面的代码:
function request_by_curl($url, $post_data = '', $timeout = 30) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    //post提交,否则get
    if ($post_data != '') {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
     curl_setopt($ch, CURLOPT_HEADER, false);
     //跳过SSL验证
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '0');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '0');
    $file_contents = curl_exec($ch);
    curl_close($ch);
    return $file_contents;
}
函数调用如下:
//$result存储返回的数据
//post
$result = request_by_curl('http://www.xxx.com', 'username=admin&password=123');
//get
 $result = request_by_curl('http://www.xxx.com');

99%的人还阅读了:
Linux:用腻了 wget 或 curl,有什么更好的替代品吗?
Mac OS:终端下使用curl命令下载文件
Ubuntu 下curl安装及使用指南
Linux 下curl命令post传递表单数据

Leave a Reply