以前遇到個問題,客戶作小程序系統,而小程序先後端交互須要https協議,所以就須要在後端nginx前置服務器配置SSL證書。而客戶給的SSL證書,是Java版的jks證書;且客戶提供的配置好基本環境的nginx,所須要的證書是crt和key組合形式,所以須要進行證書轉換。在證書轉換和證書配置過程當中,以及後續的實際生產部署的過程當中,也遇到了各類坑。[強烈建議,有錢的用戶,或者省事的用戶,使用雲服務器,不要自建服務器,這樣能夠有免費的ssl證書,能夠很簡單的配置]
1.拿到jks證書,和證書密碼(確認沒有密碼的,拿刀找大家運維去,或找供應方去)2.先將jks 轉換成p12格式,具體命令以下:html
keytool -importkeystore -srckeystore C:\cert\server.jks -destkeystore C:\cert\server.p12 -srcstoretype jks -deststoretype pkcs12
輸入命令後,會提示你三步驟,須要輸入口令(建議輸入相同的口令,就是你的jks口令,防止後續證書轉換忘記密碼)
1).輸入目標密鑰庫口令:
2).再次輸入新口令:
3).輸入源密鑰庫口令:
接下來就會提示你以下:
已成功導入別名 ca_root 的條目
已完成導入命令: 1 個條目成功導入, 0 個條目失敗或取消
到了這一步,說明已經OK了,剩下的就是轉換成crt證書和key了3.將p12轉換成crt證書, 命令以下:node
openssl pkcs12 -in C:\cert\server.p12 -nokeys -clcerts -out C:\cert\server.crt
4.將p12生成非加密的key, 命令以下:
openssl pkcs12 -in C:\cert\server.p12 -nocerts -nodes -out C:\cert\server.key
5.將證書配置到nginx之後,重啓nginx服務器6.使用ssl漏洞掃描工具,檢驗證書鏈的完整性,並獲取證書鏈(防止小程序報: fail ssl hand shake error),推薦地址https://myssl.com/chain_download.htmlnginx
7.拷貝證書鏈之後,將服務器上server.crt內容替換,重啓nginx(或nginx -s reload)
8.若是還不行,(好比:網頁訪問,依然不安全) 請清空緩存,刷新shellps : 至於以上的命令,好比: keytool、openssl哪裏來?你問我?問我爲何不安裝下呢?百度啊!小程序