nginx配置https雙向加密以及php使用curl訪問加密鏈接

1.自建CA,簽署證書

? ??#openssl配置文件路徑

????vim/etc/pki/tls/openssl.cnf

????#下面只列出配置文件中和自建CA有關(guān)的幾個關(guān)鍵指令

????dir=/etc/pki/CA#CA的工作目錄

????database=$dir/index.txt#簽署證書的數(shù)據(jù)記錄文件

????new_certs_dir=$dir/newcerts#存放新簽署證書的目錄

????serial=$dir/serial#新證書簽署號記錄文件

????certificate=$dir/ca.crt#CA的證書路徑? (主要修改這里)

????private_key=$dir/private/cakey.pem#CA的私鑰路徑

2.openssl制作CA的自簽名證書

? ? #切換到CA目錄

????????cd /etc/pki/CA

????#制作CA私鑰

????????openssl genrsa -out private/cakey.pem 2048

????#制作自簽名證書

????????openssl req -new -x509 -key private/cakey.pem -outca.crt

????#生成數(shù)據(jù)記錄文件,生成簽署號記錄文件,給文件一個初始號。

????????touch index.txt? ?//生成數(shù)據(jù)庫記錄文件

????????touchserial? ? ? ?

????????echo'01'>serial

3.生成服務(wù)器端證書

? ??????#制作服務(wù)器端私鑰

????????????openssl genrsa -out server.key 1024

????????#制作服務(wù)器端證書申請指定使用sha512算法簽名(默認(rèn)使用sha1算法)

????????????openssl req -new -key server.key -sha512 -out server.csr

????????#簽署證書

????????????openssl ca -in server.csr -out server.crt -days 3650?

4.生成客戶端證書

? ??????#制作客戶端私鑰

????????????openssl genrsa -out client.key 1024

????????#制作客戶端證書申請

????????????openssl req -new -key client.key -out client.csr

????????#簽署證書

????????????openssl ca -in client.csr -out client.crt -days 3650

注意事項:

????1、制作證書時會提示輸入密碼,設(shè)置密碼可選,服務(wù)器證書和客戶端證書密碼可以不相同。

????2、服務(wù)器證書和客戶端證書制作時提示輸入省份、城市、域名信息等,需保持一致。

????3、以下信息根證書需要和客戶端證書匹配,否則可能出現(xiàn)簽署問題

? ??4、客戶端和服務(wù)端證書輸入的信息一模一樣在簽署證書會報? (failed to update database TXT_DB error number 2)錯誤?

? ? ? ? ? ?解決方式: /etc/pki/CA/index.txt 是不允許生成兩條相同的數(shù)據(jù), /C=CN/ST=GuangDong/O=default 修改?/C=CN/ST=GuangDong/O=aaa

? ? ? ? ? ? (不一定這樣修改,隨便修改一下字母也ok)??

5.Nginx配置文件

? ? ? ? #ssl 443端口配置添加

? ??????????????ssl on;

????????????????ssl_certificate? 你的證書路徑/server.crt;

????????????????ssl_certificate_key? 你的證書路徑/server.key;

????????????????ssl_client_certificate? /etc/pki/CA/ca.crt;

6.客戶端證書格式轉(zhuǎn)換

? ??????openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12?

? ? ? ? #window安裝證書 雙擊打開下一步即可

7.使用php curl 訪問

? ? 1. openssl pkcs12 -in client.p12 -clcerts -nokeys -out public-cert.pem

? ? 2.?openssl pkcs12 -in client.p12 -nocerts -out private-key.pem

? ? 3. # curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');

? ? ? ? # curl_setopt($ch,CURLOPT_SSLCERT,'你的路徑/public-cert.pem');

? ? ? ? # curl_setopt($ch,CURLOPT_SSLCERTPASSWD,'你的密碼');

? ? ? ? ?# curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');

? ? ? ? ? # curl_setopt($ch,CURLOPT_SSLKEY,'你的路徑/private-key.pem');

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容