Tomcat - SSL操作(csr-key生成jks)

原文地址

 
簡介

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種主要方式:

  1. 用JRE自帶的Keytool工具。先產生一個新的jks文件,併到處一個csr文件,然後將csr發給CA簽名,並將簽名後的文件導入jks文件。
  2. 用openssl工具,製作key和csr文件,將csr發給CA簽名得到cer文件,然後將key和cer合併成一個jks文件。

製作CSR申請文件

1、製作Tomcat用CSR請求文件,最簡單的辦法就直接使用我們的 OpenSSL CSR在線生成器: https://www.myssl.cn/openssl/createcsr.asp (注意:您必須同時保存server.key和server.csr文件)

2、常見的JKS文件製作,要採用Keytool工具,這個工具是JRE自帶的。通過命令行的方式輸入CSR信息,而且可以支持中文資料。
首先,生成一個新的jks文件,命令如下: 
keytool -genkey -alias tomcat -keyalg RSA -keystore c:\server.jks

輸入密鑰庫密碼:changeit
您的姓名是什麼?
  [未知]:  www.myssl.cn
您的組織單位名稱是什麼?
  [未知]:  Shanghai Fastcom Technology Co.,Ltd
您的組織名稱是什麼?
  [未知]:  It Dept.
您的市/縣/區或地點名稱是什麼?
  [未知]:  Shanghai
您的省/直轄市名稱是什麼?
  [未知]:  Shanghai
此單位的兩字母國家或地區代碼是什麼?
  [未知]:  CN
CN=www.myssl.cn, OU="Shanghai Fastcom Technology Co.,Ltd", 
O=It Dept., L=Shanghai, ST=Shanghai, C=CN 正確嗎?
(輸入“yes”或“no”)
  [否]:  Y
爲 <tomcat> 輸入密鑰密碼
        (如果與密鑰庫密碼相同則返回):

說明: 輸入keystore密碼: 請輸入保護證書密鑰的密碼。
 
您的名字與姓氏是什麼?請輸入域名,例如:www.myssl.cn 
您的組織單位名稱是什麼?請輸入單位名稱,如: Shanghai Fastcom Technology Co Ltd
您的組織名稱是什麼?請輸入部門名稱,如: IT Dept
您所在的城市或區域名稱是什麼?輸入城市名稱,如:Shanghai
您所在的州或省份名稱是什麼?輸入省份名稱,如:Shanghai
該單位的兩字母國家代碼是什麼?中國請輸入CN

 
CN=www.myssl.cn, OU=Shanghai Fastcom Technology Co Ltd, O=IT Dept, L=Shanghai, ST=Shanghai, C=CN 正確嗎?輸入 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文件即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章