jetty下配置https
1:生成證書
使用java自帶的keytool命令
第一步:使用java命令生成keystore檔案
keytool -genkey -alias boyaServer -keypass boya2017-keyalg RSA -keysize 1024 -validity 365 -keystore boyaServer.keystore-storepass boya2017
第二步:為客戶端生成證書
為瀏覽器生成證書,以便讓伺服器來驗證它。
keytool -genkey -alias boyaClient -keypass boya2017-keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystoreboyaClient.p12 -storepass boya2017
第三步:讓伺服器信任客戶端證書
1、由於不能直接將PKCS12格式的證書庫匯入,必須先把客戶端證書匯出為一個單獨的CER檔案,使用如下命令
keytool -export -alias boyaClient -keystore boyaClient.p12-storetype PKCS12 -keypass boya2017 -file client.cer
2、將client檔案匯入到伺服器的證書庫,新增為一個信任證書:
keytool -import -v -file client.cer -keystoreboyaServer.keystore -storepass boya2017
完成之後通過list命令檢視伺服器的證書庫,
可以看到兩個證書,一個是伺服器證書,一個是受信任的客戶端證書:
keytool -list -v -keystore boyaServer.keystore
第四步:讓客戶端信任伺服器證書
由於是雙向SSL認證,客戶端也要驗證伺服器證書,因此,必須把伺服器證書新增到瀏覽器的“受信任的根證書頒發機構”。由於不能直接將keystore格式的證書庫匯入,必須先把伺服器證書匯出為一個單獨的CER檔案,使用如下命令:
keytool -keystore boyaServer.keystore -export -aliasboyaServer -file server.cer
雙擊server.cer檔案,按照提示安裝證書,將證書填入到“受信任的根證書頒發機構”。開啟瀏覽器 - 工具 - internet選項-內容- 證書-把中級證書頒發機構裡的www.localhost.com(該名稱即時你前面生成證書時填寫的名字與姓氏)證書匯出來-再把匯出來的證書匯入 受信任的根頒發機構 就OK了。
或者使用瀏覽器匯入boyaClient.p12證書
以谷歌為例
設定 ---- 高階 ----- 管理證書 ----匯入
2:jetty配置
主要是修改jetty啟動的配置檔案 start.ini檔案
加入如下的資訊:
# ---------------------------------------
# Module: jstl
--module=jstl
--module=ssl
jetty.ssl.port=8445
jetty.sslContext.trustStorePath=keystore_boya
jetty.sslContext.keyStorePath=keystore_boya
jetty.sslContext.keyStorePassword=boyaht
OBF:1vfx1vnq1w9j1w871vnc1vgx
jetty.sslContext.keyManagerPassword=boyaht
jetty.server.dumpBeforeStop=
etc/jetty-ssl.xml
etc/jetty-https.xml
說明:
證書的路徑是以start.jar為相對路徑的起點.當然也可以自定義路徑,至於密碼,可以選擇以明文的形式寫在檔案中,也可以以加密的形式寫在檔案中,當然建議還是寫祕文,需要注意的情況是迷文需要加入OBF:的字首.
OBF:1vfx1vnq1w9j1w871vnc1vgx
生成OBF迷文的方式,使用jetty.util.security.Password 的工具類即可.具體方法如下:
b java -cp jetty-util-9.4.6.v20170531.jarorg.eclipse.jetty.util.security.Password mima
修改完成之後,重啟jetty的指令碼即可,另外如果專案只是以https訪問的話,可以把start.ini的配置檔案中http的模組註釋掉,而只開啟https服務.