1. 程式人生 > >jetty下配置https

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服務.