1.自建CA忍级,簽署證書
? ??#openssl配置文件路徑
????vim/etc/pki/tls/openssl.cnf
????#下面只列出配置文件中和自建CA有關(guān)的幾個(gè)關(guān)鍵指令
????dir=/etc/pki/CA#CA的工作目錄
????database=$dir/index.txt#簽署證書的數(shù)據(jù)記錄文件
????new_certs_dir=$dir/newcerts#存放新簽署證書的目錄
????serial=$dir/serial#新證書簽署號(hào)記錄文件
????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ù)記錄文件茅逮,生成簽署號(hào)記錄文件,給文件一個(gè)初始號(hào)珍策。
????????touch index.txt? ?//生成數(shù)據(jù)庫(kù)記錄文件
????????touchserial? ? ? ?
????????echo'01'>serial
3.生成服務(wù)器端證書
? ??????#制作服務(wù)器端私鑰
????????????openssl genrsa -out server.key 1024
????????#制作服務(wù)器端證書申請(qǐng)指定使用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
????????#制作客戶端證書申請(qǐng)
????????????openssl req -new -key client.key -out client.csr
????????#簽署證書
????????????openssl ca -in client.csr -out client.crt -days 3650
注意事項(xiàng):
????1、制作證書時(shí)會(huì)提示輸入密碼,設(shè)置密碼可選票堵,服務(wù)器證書和客戶端證書密碼可以不相同。
????2逮栅、服務(wù)器證書和客戶端證書制作時(shí)提示輸入省份悴势、城市、域名信息等证芭,需保持一致瞳浦。
????3、以下信息根證書需要和客戶端證書匹配废士,否則可能出現(xiàn)簽署問(wèn)題
? ??4叫潦、客戶端和服務(wù)端證書輸入的信息一模一樣在簽署證書會(huì)報(bào)? (failed to update database TXT_DB error number 2)錯(cuò)誤?
? ? ? ? ? ?解決方式: /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 訪問(wèn)
? ? 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');