JDK8+Tomcat8配置https【轉】

Franson發表於2018-01-11

生成金鑰對

我比較喜歡金鑰對這個名字,因為它非常明確了HTTPS在傳輸過程中需要的兩個鑰匙(公鑰和私鑰)。如果不太瞭解HTTPS的,可以要到搜尋引擎去搜尋一下HTTPS的原理。 
首先,確保java的目錄在系統的環境變數中,不在的話,可以直接到java目錄的bin資料夾下操作。 
生成金鑰對的命令是keytool -genkeypair,在原先的有的jdk所提供的命令是keytool -genkey,但我感覺jdk8的這種表達更為明確一些。 
keytool -genkeypair -alias tomcat -keyalg RSA -keypass password -storepass password -keystore path_to_keystore/name_for_keystore.keystore

-alias 表示證照的別名,一個keystore檔案中可以存放多個alias。 
-keyalg RSA 表示金鑰演算法的名稱為RSA演算法 
-keypass password表示金鑰的口令是password 
-storepass password表示金鑰庫(生成的keystore檔案)的金鑰是keypass。 
注意:keypass和storepass理論上是可以不同的,但是我們生成的金鑰是要給tomcat用的,tomcat這傢伙好像沒有提供提取私鑰的密碼(就是上邊那個keypass)配置,因此我們只好將兩個密碼設定成一樣的。 
-keystore是生成的或者已有的keystore檔案的位置,如果不提供的話,keytool工具會把它放在使用者目錄下,還起了個名字叫.keystore。

生成金鑰對的介面就和下邊一樣 
keytool生成金鑰對


配置Tomcat

好了,現在去配置Tomcat。在Tomcat安裝目錄的conf資料夾下有個server.xml檔案,找到我們需要開啟HTTPS功能的Service,新增一個Connector。關於Tomcat中的這些概念,不懂的可以找個搜尋引擎搜一下(你就搜Tomcat Server.xml)。 
Tomcat8中給出了一個預設的Connector,我們只需要把它的註釋去掉就可以了。樣子就像下邊的圖一樣。 

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="G:/software/apache-tomcat-8.0.43-x64/xxx.keystore" keystorePass="xxxx"
                />

port是埠,protocol是協議,原來低版本的Tomcat版本有可能是”HTTP/1.1”,但是在8這個版本中是一個代表了協議的類。無所謂了。你的是哪個版本就用哪種表述,關鍵看原來的server.xml所給的例子。 
keystoreFile是我們剛剛生成的那個keystore檔案,keystorePass就是我們剛才在生成keystore檔案的時候所指定的storepass或keypass(它們是一樣的,原因前邊說啦)。你得注意keystoreFile中的F是大寫的,keystorePass中的P也是大寫的,寫錯了有可能會出問題的。

OK,現在重啟你的tomcat,輸入地址,把埠改成8443,應該就可以訪問了。

相關文章