1. 程式人生 > >openssl生成伺服器客戶端祕鑰已經頒發證書等配置命令

openssl生成伺服器客戶端祕鑰已經頒發證書等配置命令

轉載: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