開啟conf/server.xml會發現有下面一段配置被註釋著:
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> --> |
這段配置可以讓tomcat支援SSL連線。預設是註釋的。取消他的註釋,並按需修改。
secure必須設定為true,scheme必須設計為https
如果你更改了SSL埠8443為其他埠,你必須修改其他非SSL的redirectPort,因為非SSL連線會重定向那些需要SSL安全約束的使用者請求到你所修改的那個埠。
去掉註釋,並啟動tomcat,輸入 https://localhost:8443 就可以看到SSL加密效果。 8443是配置的ssl請求連線埠
配置Keystores
要使用ssl connector,必須先建立一個keystore。他包含了伺服器中被客戶端用於驗證伺服器的數字證照。一旦客戶端接受了這個證照,客戶端就可以使用public key去加密他們要傳送的資料。而伺服器,擁有一個private key,作為唯一解密資料的金鑰。
要建立keystore,可以使用JAVA_HOME/bin下的keytool
keytool -genkey -alias tomcat -keyalg RSA
其中:
-genkey:建立一個public-private key pair
-alias tomcat:使用者別名為tomcat
-keyalg RSA: 使用RSA演算法。 MD5演算法也是被支援的,但是建議使用RSA獲得更好的相容。
上面那句話,建立了一個自簽證照(self-signed certificate)
執行上面這段命令後,如果是第一次使用,會讓你輸入金鑰庫口令,這個是倉庫口令,然後輸入個人資料,最後為tomcat使用者設定口令,如果想設定為和倉庫口令一致,直接回車即可。
最後,會在C:\Users\Administrator(當前登入使用者名稱)下生成一個.keystore的檔案,儲存tomcat等key資訊。
如下圖所示:
如果想使用keystore,那麼將connector修改如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="你剛才為tomcat使用者新增的口令"/> |