tomcat中開啟的對SSL(https)的支援

Franson發表於2016-05-27

開啟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使用者新增的口令"/>

相關文章