php curl 双向验证,php使用curl库进行ssl双向认证 | 酷客365

2023-05-16

请求基础方法

private function request($url, $data = [], $method = 'get', $options = [], $returnArray = true) {

$curl = curl_init(); // 启动一个CURL会话

// is_array($data) && $data = http_build_query($data);

$method = strtoupper($method);

if ($method == 'GET') {

is_array($data) && $data = http_build_query($data);

$url .= stripos($url, '?') !== false ? '&' : '?';

$url .= $data;

} else {

curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求

curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包

}

unset($options[CURLOPT_URL], $options[CURLOPT_POST], $options[CURLOPT_POSTFIELDS]); //防止错误覆盖导致相关问题

$_options = [

CURLOPT_URL => $url,// 要访问的地址

CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查

CURLOPT_SSL_VERIFYHOST => 0,// 从证书中检查SSL加密算法是否存在

CURLOPT_FOLLOWLOCATION => 1,// 使用自动跳转

// CURLOPT_FOLLOWLOCATION => 0,// 使用自动跳转

CURLOPT_AUTOREFERER => 1,// 自动设置Referer

CURLOPT_TIMEOUT => 10,// 设置超时限制防止死循环

CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',// 模拟用户使用的浏览器

CURLOPT_HEADER => 0, //不输出响应头

CURLOPT_CUSTOMREQUEST => $method, //请求方式

CURLOPT_RETURNTRANSFER => 1, //获取的信息以文件流的形式返回

];

$options = ($_options + $options);

curl_setopt_array($curl, $options);

$return = curl_exec($curl); // 执行操作

$resinfo = curl_getinfo($curl);

//关闭URL请求

curl_close($curl);

if ($resinfo["http_code"] != 200) {

var_dump($data);

var_dump($resinfo);

var_export($return);

exit;

// return $return;

}

if (true === $returnArray) {

$return = json_decode($return, true);

}

return $return;

}

调用时

$options = [

CURLOPT_HTTPHEADER => $header,

CURLOPT_SSLCERTTYPE => 'PEM', // PHP的 CURL 只支持 PEM 方式

CURLOPT_SSLCERT => 'cert.pem文件路径',

CURLOPT_SSLCERTPASSWD => '证书密码',

CURLOPT_SSLKEYTYPE => 'PEM', // PHP的 CURL 只支持 PEM 方式

CURLOPT_SSLKEY => 'private.pem 文件路径',

];

$this->request('url','json字符串', 'POST', $options);

由于php的curl只支持pem格式、der、eng格式,而之前生成的是p12的格式,所以需要转换一下

p12 pfx 证书 转换命令

PKCS#12 到 PEM 的转换

openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem

验证

openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

pfx 到 PEM 的转换

openssl pkcs12 -nocerts -nodes -in cert.pfx -out private.pem

验证

openssl pkcs12 -clcerts -nokeys -in cert.pfx -out cert.pem

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php curl 双向验证,php使用curl库进行ssl双向认证 | 酷客365 的相关文章

随机推荐