/**
* @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;
}
PHP中使用cURL实现进行Post请求 ssl 双向认证
最新推荐文章于 2023-06-19 16:29:31 发布