php使用curl庫進行ssl雙向認證

2021-07-22 04:27:20 字數 3216 閱讀 3833

官方文件:

官方舉例:

<?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埠來訪問了

直接附上**:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

/**

* @name ssl curl post資料

* @param string $url 接收資料的api

* @param string $vars 提交的資料

* @param int $second 要求程式必須在$second秒內完成,負責到$second秒後放到後台執行

* @return string or boolean 成功且對方有返回值則返回

*/

functioncurl_post_ssl($url,$vars,$second=30,$aheader=array())

curl_setopt($ch,curlopt_post, 1);

curl_setopt($ch,curlopt_postfields,$vars);

$data= curl_exec($ch);

curl_close($ch);

if($data)

return$data;

else

returnfalse;

}

引數解釋:

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

使用PHP的cURL庫進行網頁抓取

使用php的curl庫可以簡單和有效地去抓網頁。你只需要執行乙個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從乙個鏈結上取部分資料,或是取乙個xml檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,curl 是乙個功能強大的php庫。本文主要講述如果使用...

CURL使用SSL證書訪問HTTPS

curl詳細選項說明 url 若服務端要求客戶端認證,需要將pfx證書轉換成pem格式 openssl pkcs12 clcerts nokeys in cert.pfx out client.pem 客戶端個人證書的公鑰 openssl pkcs12 nocerts nodes in cert.p...

CURL使用SSL證書訪問HTTPS

curl詳細選項說明 url 若服務端要求客戶端認證,需要將pfx證書轉換成pem格式 openssl pkcs12 clcerts nokeys in cert.pfx out client.pem 客戶端個人證書的公鑰 openssl pkcs12 nocerts nodes in cert.p...