nginx 配置自簽名的ssl證書
最近要搭一個https的測試環境,使用nginx做反向代理。
網上找過不少資料,但過程不是很完整,吃了不少虧,故把自己的操作過程總結下來。如果你剛好遇到這個問題,希望對你有幫助!
********************************分割線*************************
使用java自帶jdk生成ssl自簽名證書(以生成uat環境的ssl證書為例)
1、開啟cmd命令視窗,指定使用RSA演算法生成一個頒發證書的機構,
執行命令:keytool -genkey -alias uat -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore D:/UAT/KEY/uat.keystore -storepass password
2、使用export命令匯出cer證書:
執行命令:keytool -export -alias uat -keystore D:/UAT/KEY/uat.keystore -storepass password -rfc -file D:/UAT/KEY/uat.cer
3、因為keytool不提供命令匯出私鑰,所以需要編寫java類匯出key,測試類如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
算出key值如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
新建一個uat.key命名的檔案,把key的內容貼上到這個資料夾裡面:
4、到這一步,已經可以將cer證書(若需要crt證書,可以直接把cer證書檔案的字尾改為crt即可)配置到nginx中使用,但是使用此時的key需要每次訪問的時候輸入一次密碼,相當麻煩。所以最好對key檔案再ssl免密碼操作一次。步驟如下:
在windows上安裝openssl轉換工具:
Win64OpenSSL-1_0_2c.exe
vcredist_x64.exe
然後再將openss的bin目錄配置到系統環境變數裡:
執行命令:rsa -in D:\UAT\key\uat.key -out D:\UAT\key\uat.key.unsecure
5、把證書檔案拷貝到測試環境,並配置nginx的config檔案(我事先把uat.cer檔案改名為uat.crt),如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
重啟nginx即可實現https訪問。因為是自簽名的證書,所以瀏覽器訪問時需要先手動信任一下。
各步驟命令彙總:
1 2 3 4 5 6 7 |
|