openssl生成伺服器客戶端祕鑰已經頒發證書等配置命令
阿新 • • 發佈:2019-01-30
轉載:http://davidbj.blog.51cto.com/4159484/1613780/
1.首先要生成伺服器的私鑰:
openssl genrsa -des3 -out server.key 2048
{注:openssl rsa -in server.key -out server.key
執行這個命令之後,再啟動nginx時,就無需輸入密碼}
2. 用server.key生成一個證書
openssl req -new -key server.key -out server.csr
生成的csr 檔案交給CA機構簽名後,形成伺服器自己的證書。按照提示,提供伺服器證書的相關資訊。
3. 對客戶端也做同樣的命令生成key及csr檔案
openssl genrsa -des3 -out client.key 2048
4. 用client.key 生成一個證書
openssl req -new -key client.key -out client.csr
5. 生成CSR證書檔案必須有CA機構的簽名才可以形成證書。這裡製作自己的CA生成一個key檔案CA.key和一個根證書ca.crt
openssl req -new -x509 -keyout ca.key -out ca.crt
7. 建立openssl.conf 生成的配置檔案,輸入一下命令
#根據openssl.cnf生成配置檔案
touch /etc/pki/CA/{index.txt,serial}
#設定副本名稱開始內容
echo 01 > /etc/pki/CA/serial
#設定副本證書存放目錄
mkdir /etc/pki/CA/newcerts
8. 用CA的證書為剛才生成的server.csr 和 client.csr進行檔案簽名
a:為伺服器頒發證書
openssl ca -in server.csr -out server.crt -cert ca.crt-keyfile ca.key
注:該命令執行後需要選擇兩次[y/n],我們輸入y,即可。
b: 為客戶端頒發證書
openssl ca -in client.csr -out client.crt -cert ca.crt-keyfile ca.key
9:證書格式轉換
#IE瀏覽器需要p12證書,所以需要簽發p12證書,用於IE簽發:
openssl pkcs12 -export -clcerts -in client.crt -inkeyclient.key -out client.p12
#IOS 證書籤發格式
openssl x509 -in client.crt -out client.cer
#Android 證書籤發格式
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
#pem格式證書
openssl pkcs12 -export -in ddmdd_a.pfx -out client.pem
10 其他:
a. 刪除私鑰密碼:
#刪除私鑰密碼
openssl rsa -in client.key -out client_open.key
b. 證書撤銷
echo 01 > crlnumber
openssl ca -keyfile ca.key -cert ca.crt -revoke client.crt #從CA中撤銷證書client.crt
openssl ca -gencrl -keyfile ca.key -cert ca.crt -outclient.crl #生成或更新撤銷列表
c. 檢視證書資訊
openssl x509 -in client.pem -noout -text
d.
client 瀏覽器需要使用的檔案:ca.crt,client.crt,client.key,client.pfx
server 端使用的檔案有: ca.crt,server.crt,server.key
11. 配置Nginx SSL
server {
listen 443ssl;
server_name smsapi.chunbo.com;
root /var/www/smsapi.david.com;
ssl on;
ssl_certificate /etc/nginx/conf.d/server.crt;
ssl_certificate_key /etc/nginx/conf.d/server.key;
ssl_client_certificate /etc/nginx/conf.d/ca.crt;
ssl_verify_client off;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
indexindex.php index.html;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
if (-f$request_filename) {
fastcgi_pass 127.0.0.1:9000;
}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
#nginx 配置完成,reloadNginx服務
12. 客戶端匯入證書
證書安裝及使用把剛才生成的證書:根證書ca.crt和客戶端client.crt(client.pfx)安裝到客戶端,ca.crt安裝到信任的機構,client.crt直接在windows安裝或安裝到個人證書位置。(如果是IE瀏覽器,需要安裝client.pfx證書,在匯入的時候需要輸入證書籤發的密碼)
13. 測試
接下來就可以通過瀏覽器進行測試。有的時候可能會作為一個API介面提供其它程式進行呼叫,比如我使用pythonrequests進行呼叫
import requests
responseObj = requests.get(' cert=('/path/client.crt','/path/client.key' ) )
data = responseObj.text
或:
responseObj = requests.get(' verify='/path/client.pem')
data = responseObj.text
如果是JAVA程式,需要P12格式證書。根據自己的需求進行選擇。
給予Nginx+openssl 部署已經完成。
本文出自 “David”部落格,請務必保留此出處http://davidbj.blog.51cto.com/4159484/1613780