日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php使用curl库进行ssl双向认证

發布時間:2025/5/22 php 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php使用curl库进行ssl双向认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方文檔:

http://www.php.net/manual/zh/function.curl-setopt.php#10692

官方舉例:

<?php
curl_setopt
($ch,?CURLOPT_VERBOSE,?'1');
curl_setopt($ch,?CURLOPT_SSL_VERIFYHOST,?'1');
curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?'1');
curl_setopt($ch,?CURLOPT_CAINFO,??getcwd().'/cert/ca.crt');
curl_setopt($ch,?CURLOPT_SSLCERT,?getcwd().'/cert/mycert.pem');
curl_setopt($ch,?CURLOPT_SSLCERTPASSWD,?'password');
?>

由于業務原因,后臺登陸需要使用SSL雙向認證,即web服務器有證書,瀏覽器客戶端也需要安裝證書

然后這樣的話,php接口文件就需要走443端口來訪問了

直接附上代碼:

?

/*** @name ssl Curl Post數據* @param string $url 接收數據的api* @param string $vars 提交的數據* @param int $second 要求程序必須在$second秒內完成,負責到$second秒后放到后臺執行* @return string or boolean 成功且對方有返回值則返回*/function curl_post_ssl($url, $vars, $second=30,$aHeader=array()){$ch = curl_init();//curl_setopt($ch,CURLOPT_VERBOSE,'1');curl_setopt($ch,CURLOPT_TIMEOUT,$second);curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');curl_setopt($ch,CURLOPT_SSLCERT,'/data/cert/php.pem');curl_setopt($ch,CURLOPT_SSLCERTPASSWD,'1234');curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');curl_setopt($ch,CURLOPT_SSLKEY,'/data/cert/php_private.pem');if( count($aHeader) >= 1 ){curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);}curl_setopt($ch,CURLOPT_POST, 1);curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);$data = curl_exec($ch);curl_close($ch);if($data)return $data;else return false;}

參數解釋:

?

CURLOPT_TIMEOUT:超時時間

CURLOPT_RETURNTRANSFER:是否要求返回數據

CURLOPT_SSL_VERIFYPEER:是否檢測服務器的證書是否由正規瀏覽器認證過的授權CA頒發的

CURLOPT_SSL_VERIFYHOST:是否檢測服務器的域名與證書上的是否一致

CURLOPT_SSLCERTTYPE:證書類型,"PEM" (default), "DER", and"ENG".

CURLOPT_SSLCERT:證書存放路徑

CURLOPT_SSLCERTPASSWD:證書密碼

CURLOPT_SSLKEYTYPE:私鑰類型,"PEM" (default), "DER", and"ENG".

CURLOPT_SSLKEY:私鑰存放路徑

?

?

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

PKCS#12 到 PEM 的轉換

openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem 驗證 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

?

?

轉載于:https://www.cnblogs.com/freespider/p/3622830.html

總結

以上是生活随笔為你收集整理的php使用curl库进行ssl双向认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。