Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,目前最新版本是6.0.20(截止到2009-10-22)。
Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟體發展商的認可,成為目前比較流行的Web 應用伺服器。
另外,Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。
當Tomcat作為獨立的Web Servcer運行的時候,可以獨立處理SSL請求,這個時候,我們就需要在Tomcat上安裝SSL憑證,如果Tomcat和Apache聯合工作,事實上是作為Apache的一個獨立進程來負責JSP頁面和Servlet,這個時候,我們就需要將SSL憑證安裝在Apache上,這點需要先確認好。
Tomcat還有一個特殊的模組:APR(Apache Portable Runtime)是為了提高Tomcat處理靜態內容性能,提供的元件,其實就是以Apache2.0為核心的一個http服務。在HTTPS方面,APR和Apache一樣採用Openssl,在憑證安裝部分,會簡要說明一下。
Tomcat支援Jave Keystore檔格式作為SSL憑證存儲用途。Java Keystore文件的常見副檔名有.jks和.key。要製作JKS檔,有2種主要方式:
- 用JRE自帶的Keytool工具。先產生一個新的jks檔,並到處一個csr檔,然後將csr發給CA簽名,並將簽名後的文件導入jks文件。
- 用openssl工具,製作key和csr文件,將csr發給CA簽名得到cer檔,然後將key和cer合併成一個jks檔。
1、製作Tomcat用CSR請求檔,最簡單的辦法就直接使用我們的 OpenSSL CSR線上生成器: http://www.myssl.com.tw/openssl/createcsr.asp
2、常見的JKS檔製作,要採用Keytool工具,這個工具是JRE自帶的。通過命令行的方式輸入CSR資訊,而且可以支援中文資料。
首先,生成一個新的jks檔,命令如下:
keytool -genkey -alias tomcat -keyalg RSA -keystore c:\server.jks
輸入密鑰庫密碼:changeit
您的姓名是什麼?
[未知]: www.myssl.tw
您的組織單位名稱是什麼?
[未知]: Cloudmax Inc.
您的組織名稱是什麼?
[未知]: It Dept.
您的市/縣/區或地點名稱是什麼?
[未知]: Taiwan
您的省/直轄市名稱是什麼?
[未知]: Taipei
此單位的兩字母國家或地區代碼是什麼?
[未知]: TW
CN=www.myssl.tw, OU="Cloudmax Inc.",
O=It Dept., L=Taiwan, ST=Taipei, C=CN 正確嗎?
(輸入“yes”或“no”)
[否]: Y
為 <tomcat> 輸入密鑰密碼
(如果與密鑰庫密碼相同則返回):
說明:
輸入keystore密碼: 請輸入保護憑證密鑰的密碼。
您的名字與姓氏是什麼?請輸入功能變數名稱,例如:www.myssl.cn
您的組織單位名稱是什麼?請輸入單位名稱,如: Cloudmax Inc.
您的組織名稱是什麼?請輸入部門名稱,如: IT Dept
您所在的城市或區域名稱是什麼?輸入城市名稱,如:Taipei
您所在的州或省份名稱是什麼?輸入省份名稱,如:Taiwan
該單位的兩字母國家代碼是什麼?台灣請輸入CN
CN=www.myssl.tw, OU= Cloudmax Inc., O=IT Dept, L=Taipei, ST= Taipei, C=TW 正確嗎?輸入 Y
輸入的主密碼(如果和 keystore 密碼相同,按回車):按回車
根據這個jks檔產生一個csr檔,輸入命令:
keytool -certreq -alias tomcat -keystore server.jks -file server.csr
1、將憑證內容存為一個檔:
您會收到一封來自憑證中心的郵件,憑證內容附在郵件中。如果憑證是以附件的形式(Cert.cer)夾帶在郵件中,您就可以直接應用它。如果您的憑證中以文本的方式存在郵件中,您就需要將郵件中的憑證部分的內容用Vi或Notepad存成一個純文字檔案。不要將其存成Microsoft Word 或其他文字處理軟體格式,並確定憑證內容中不含有空行和空格,檔案名可以為server.cer。如下所示:
將保存好的server.cer檔和製作CSR時候生成的server.key一起複製到伺服器上。
2、如果是使用線上工具製作的CSR檔,請打開線上JKS合成工具,將製作CSR時候的server.key文件和剛剛收到的server.cer輸入2個文本框,然後合成一個server.jks文件。
3、如果是用keytool做的CSR檔,則需要按下面方式,將憑證導入原來的jks檔。
3.1 請使用P7B線上轉換工具將server.cer轉換為P7B檔:
請用Notepad打開server.cer檔,將其中的全部內容(包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----),將全部內容複製到P7B線上轉換工具中的文本框中,然後點擊“合成P7B文件”。待合成成功後,下載檔,保存為cert.txt。
3.2 然後運行命令,將CA簽好的憑證文件cert.txt導入jks文件:
keytool -import -keystore server.jks -alias tomcat -file cert.txt
4、如果沒有APR的Tomcat,按下面例子更新Server.xml檔配置
<-- Define a SSL Coyote HTTP/1.1 Connector on port 443 -->
<!--Tomcat 5.5
<Connector
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="server.jks" keystorePass="changeit"/>
-->
不同tomcat版本,修改server.xml的方式不同,請參考tomcat說明:
tomcat 6.0 http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
tomcat 5.5 http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html
tomcat 5.0 http://tomcat.apache.org/tomcat-5.0-doc/ssl-howto.html
tomcat 4.1 http://tomcat.apache.org/tomcat-4.1-doc/ssl-howto.html
5、配置了APR的Tomcat,需要使用server.key和server.cer檔,並按mod_ssl的語法來更新Server.xml檔配置
<-- Define a APR SSL Coyote HTTP/1.1 Connector on port 443 --&rt;
<!--
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
port="443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="server.cer"
SSLCertificateKeyFile="server.key"
SSLVerifyClient="none" sslProtocol="TLS"/>
-->
1、沒有APR模組的Tomcat,如果需要採用客戶憑證認證(雙向SSL認證),需要在server.xml中增加以下配置:
clientAuth="true"
truststoreFile="ca.jks"
truststorePass="changeit"
說明:
clientAuth="true",表示必須有客戶憑證才可以訪問。
clientAuth="false",表示不驗證是否有客戶憑證。
clientAuth="want",表示會檢查客戶憑證,但如果沒有也可以繼續訪問。
2、使用APR模組的Tomcat,需要用mod_ssl的語法來配置客戶憑證認證,增加以下配置:
SSLVerifyClient="require"
SSLCACertificateFile="ca.cer"
詳細參數,可以參考Apache SSL文檔說明。
Tomcat的憑證備份,只需要將server.jks文件(或可查看server.xml中keystoreFile對應的那個jks檔)複製到備份媒體上即可了。
要恢復Tomcat的憑證同樣非常簡單,將備份的jks檔,複製到新的伺服器上,然後參考上面伺服器憑證安裝說明,修改server.xml檔即可。
|