PHP中使用cURL实现进行Post请求 ssl 双向认证

/**
  * @param string $url 接收数据的api
  * @param string $vars 提交的数据
  * @param int $second 要求程序必须在 $second 秒内完成,负责到 $second 秒后放到后台执行
  * @param array $aHeader 设置HTTP头字段的数组
  * @return string | boolean 成功且对方有返回值则返回
  */
 function curl_post_ssl($url, $vars, $second = 30, $aHeader = array()) {
 	  // 初始化 cURL 会话
     $ch = curl_init();

     // 设置 cURL 传输选项
     curl_setopt($ch, CURLOPT_VERBOSE, '1'); // 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
     curl_setopt($ch, CURLOPT_TIMEOUT, $second); // 超时时间
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 是否要求返回数据
     curl_setopt($ch, CURLOPT_URL, $url); // 请求url地址
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 是否检测服务器的证书是否由正规浏览器认证过的授权CA颁发的
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 是否检测服务器的域名与证书上的是否一致
     curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM'); // 证书类型,"PEM"(default), "DER", and"ENG"
     curl_setopt($ch, CURLOPT_SSLCERT, 'xxxxx.crt'); // 证书存放路径
     curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '123456'); // 证书密码
     curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM'); // 私钥类型,"PEM"(default), "DER", and"ENG"
     curl_setopt($ch, CURLOPT_SSLKEY, 'xxxxx.key'); // 私钥存放路径
     if(count($aHeader) >= 1 ){
         curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); // 一个用来设置HTTP头字段的数组, 如 array('Content-type: text/plain', 'Content-length: 100')
     }
     curl_setopt($ch, CURLOPT_POST, 1); // POST 请求
     curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); // 全部数据使用HTTP协议中的"POST"操作来发送

     // 执行 cURL 会话
     $data = curl_exec($ch);

     // 关闭 cURL 会话
     curl_close($ch);

     if ($data)
         return $data;
     else
         return false;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值