記錄一次Nginx證書(shū)配置,我這個(gè)過(guò)程可能有些繁瑣,如果大牛有更好的辦法,歡迎評(píng)論指正
環(huán)境
1. windows系統(tǒng)
2. nginx 1.14.2
步驟
1.利用JDK的keytool工具生成密鑰庫(kù)和證書(shū)(以下代碼片段是一個(gè)bat腳本)
@echo on
rem 1. 生成密鑰庫(kù)
rem 生成密鑰對(duì)? 加密算法RSA 證書(shū)擁有者信息 server條目 server.jks密鑰庫(kù) 條目密碼 密鑰庫(kù)密碼
keytool -genkeypair -keyalg RSA -dname "CN=HanLuo" -alias server -keystore server.jks -keypass 123456 -storepass 123456
rem 2. 導(dǎo)出條目為自簽名證書(shū)
rem 導(dǎo)出到server.cer文件中 server條目 server.jks密鑰庫(kù) 密鑰庫(kù)密碼
keytool -exportcert -file server.cer -alias server -keystore server.jks -storepass 123456
rem 3. 將自簽名證書(shū)導(dǎo)入信任庫(kù)
rem 導(dǎo)入證書(shū) server.cer server條目 導(dǎo)入client_trusk.jks信任庫(kù) 密鑰庫(kù)密碼 條目密碼
keytool -importcert -file server.cer -alias server -keyalg client_trusk.jks -storepass 123456 -keypass 123456
1.1 查看jks文件中的entry
keytool -list -keystore server.jks
2.將.jks文件轉(zhuǎn)為.p12(PKCS12格式證書(shū)庫(kù))
keytool -importkeystore -srckeysotre server.jks -destkeystore server-pkcs12.p12 -deststoretype PKCS12
2.2 查看新格式(pkcs12)證書(shū)庫(kù)
keytool -deststoretype PKCS12 -keystore server-pkcs12.p12 -list
3.將cer格式證書(shū)轉(zhuǎn)pem格式
openssl x509 -inform der -in server.cer -out server-pem.pem
4. 提取私鑰
openssl pkcs12 -nocerts -nodes -in server-pkcs12.p12 -out server.key
5. nginx服務(wù)器配置
server {
? ? ? ? #監(jiān)聽(tīng)端口和域名
? ? ? ? listen? ? ? 443 ssl;
? ? ? ? server_name? localhost;
? ? ? ? #以下兩個(gè)為證書(shū)文件
? ? ? ? ssl_certificate D:/java/nginx-1.14.2/cert/server-p.pem;
? ? ? ? ssl_certificate_key D:/java/nginx-1.14.2/cert/server.key;
? ? ? ? ssl_session_timeout 1m;
? ? ? ? ssl_protocols SSLv2 SSLv3 TLSv1.2;
? ? ? ? ssl_ciphers? ? ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256:AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
? ? ? ? ssl_prefer_server_ciphers? on;
? ? ? ? location / {
? ? ? ? ? ? root D:/nginx/portal;
? ? ? ? ? ? index index.html;
? ? ? ? }
? ? }
# 訪問(wèn)80端口時(shí)轉(zhuǎn)發(fā)到443端口黍判,轉(zhuǎn)為https訪問(wèn)
? ? server {
? ? ? ? listen? ? ? 80;
? ? ? ? server_name? localhost;
? ? ? ? return 301 https://$host$request_uri;
? ? }