curl mysql存储pem证书_curl 方式及证书验证跳过设置

提交数据到https时,需要pem证书来加密。

我们使用浏览器访问https的时候,浏览器会自动加载网站的安全证书进行加密。但是你用curl请求https时,没有通过浏览器,就只有自己手动增加一个安全证书进行加密。

curl 请求一共分四步,初始化,设置属性,执行并获取结果,释放句柄

一 需要验证:

1 function httpGet($url) {2 $curl =curl_init();3 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);4 curl_setopt($curl, CURLOPT_TIMEOUT, 500);5 //为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。6 // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。

7 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);8 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);9 curl_setopt($curl,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');//这是根据http://curl.haxx.se/ca/cacert.pem 下载的证书,添加这句话之后就运行正常了

10 curl_setopt($curl, CURLOPT_URL, $url);11

12 $res = curl_exec($curl);13 curl_close($curl);14

15 return $res;16 }

二 不需要验证:

1 function getCurl($url) {2 //创建一个新cURL资源

3 $ch =curl_init();4

5 //设置URL和相应的选项

6 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //跳过证书验证(https)的网站无法跳过,会报错

7 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //跳过证书验证

8 curl_setopt($ch, CURLOPT_URL, $url);9 curl_setopt($ch, CURLOPT_HEADER, 0);10 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回的数据不打印11 // 抓取URL并把它传递给浏览器

12 $rs = curl_exec($ch);13 if($rs === false) {14 return 'Curl error: ' . curl_error($ch);15 }16 //关闭cURL资源,并且释放系统资源

17 curl_close($ch);18 return $rs;19 }

/**

* 发送http请求获取结果json字符串

*

* @param $url

* @param null $data

* @param string $method

* @return mixed

*/

function sendHTTPRequest($url, $data = null,$method = 'post') {

// 1.初始化

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过证书验证(https)的网站无法跳过,会报错

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书验证

// 2.设置url

curl_setopt($ch, CURLOPT_URL, $url);

// 2.1 设置返回是字符串形式

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 2.2 支持POST

if (!empty($data)) {

if($method === 'post') {

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

}

} elseif($method === 'get') {

//设置头文件的信息作为数据流输出

curl_setopt($ch, CURLOPT_HEADER, 0);

}

// 3.发送接收

$res = curl_exec($ch);

// 4.关闭

curl_close($ch);

return $res;

}

知识点摘要:

CURLOPT_SSL_VERIFYPEER 设置为FALSE 禁止 cURL 验证对等证书(peer’s certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。

CURLOPT_CAINFO 一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义。可能需要绝对路径。

CURLOPT_CAPATH 一个保存着多个CA证书的目录。这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的。

CURLOPT_SSL_VERIFYHOST 设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 在生产环境中,这个值应该是 2(默认值)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值