生成密鑰對
我比較喜歡密鑰對這個名字,因為它非常明確了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。
生成密鑰對的界面就和下邊一樣 
配置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,應該就可以訪問了。
