用JDK生成Nginx可用的https自簽名證書及常用配置


給NginX配置,利用jdk生成的自簽名證書

測試環境:Windows10、nginx-1.14.0
步驟

一、生成證書

這里使用自己生成的免費證書。在${JAVA_HOME}/bin 下可以看到keytool.exe,在改目錄打開cmd然后輸入:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore d:\local.keystore -validity 36500

生成別名為 tomcat 名稱為local.keystore的證書,有效期100年。然后密碼什么的根據自己需求填寫。
生成證書過程中:【你的名字】對應網站域名或IP。

二、轉換證書

常用證書格式:JKS(.keystore),微軟(.pfx),OPSSL之PEM(.key + .crt),其中tomcat使用JKS格式,nginx使用PEM格式。

由於生成的證書是jks格式,nginx不能直接用,需要要轉成PEM格式,這要用到jks2pfx工具進行轉換。
b.下載jks2pfx工具解壓后,在解壓目錄打開cmd,然后輸入:

JKS2PFX D:\local.keystore 123456 tomcat exportfile D:\Program Files\java\JDK7\jre7\bin

jks2pfx的命令格式:JKS2PFX keystore password alias exportname Java_Runtime_Folder

c.上面的命令是把d盤下的local.keystore(根據你自己keystore的位置來寫)中別名為tomcat、密碼是123456的SSL證書導出,運行后將在jks2pfx的解壓目錄下產生3個文件 exportfile.key、exportfile.crt、exportfile.pfx。本文只要用到exportfile.key、exportfile.crt,把這兩個文件復制到${NGINX_HOME}/conf目錄下。

jks2pfx工具

  1. 下載:JKS2PFX轉換工具。
  2. 將壓縮包解開到 c:\jks2pfx 目錄下。
  3. 運行以下命令:JKS2PFX <導出文件名> [Java Runtime的目錄]
    說明:

KeyStore文件:指Tomcat保存SSL證書的文件
KeyStore密碼:KeyStore文件對應的密碼
Alias別名:  生成證書CSR時,所起的Alias別名
導出文件名: 准備導出的文件名稱 (不要帶擴展名)
JavaRuntime目錄(可選): 指包含Java.exe和keytool.exe的目錄,如:c:\progra~1\Java\jre1.5.0_06\bin

例如:

JKS2PFX server.jks 123456 tomcat exportfile c:\progra~1\Java\jre1.5.0_06\bin

該命令將server.jks中別名為tomcat的SSL證書導出,運行后將產生3個文件:
exportfile.key、exportfile.crt、exportfile.pfx;
其中exportfile.pfx可以導入到微軟的IIS中使用;
exportfile.key和exportfile.crt可用於Apache、Nginx或者其他OpenSSL兼容的系統。

可以用下面命令查看PFX文件內容:

openssl pkcs12 -info -in exportfile.pfx

三、配置nginx

修改nginx.conf,把要實現https的server像下面這樣配置:
HTTPS server

server {
   ssl on;
   listen       443 ssl;
   server_name  localhost;

   ssl_certificate      exportfile.crt;
   ssl_certificate_key  exportfile.key;

   ssl_session_cache    shared:SSL:10m;
   ssl_session_timeout  10m;

   ssl_ciphers  HIGH:!aNULL:!MD5;
   ssl_prefer_server_ciphers  on;
}

重啟nginx生效。

http的80端口請求自動重定向到https的443

server {
    listen 80;
    server_name yang_host;
    return 301 https://$server_name$request_uri;
}

server {
 	ssl on;
    listen 443;
    server_name yang_host;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM