《google搜的 具體地址忘了》
一、配置環境
1.1 Tomcat簡介
Tomcat是Apache Jakarta的子項目之一,作為一個優秀的開源web應用服務器,全面支持jsp1.2以及servlet2.3規范。因其技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的web應用服務器。
1.2 SSL(Server Socket Layer)簡介
在網絡上信息在源-宿的傳遞過程中會經過其它的計算機。一般情況下,中間的計算機不會監聽路過的信息。但在使用網上銀行或者進行信用卡交易的時候有可能被監視,從而導致個人隱私的泄露。由于Internet和Intranet體系結構的原因,總有某些人能夠讀取并替換用戶發出的信息。隨著網上支付的不斷發展,人們對信息安全的要求越來越高。因此Netscape公司提出了SSL協議,旨在達到在開放網絡(Internet)上安全保密地傳輸信息的目的,這種協議在WEB上獲得了廣泛的應用。 之后IETF(
www.ietf.org)對SSL作了標準化,即RFC2246,并將其稱為TLS(Transport Layer Security),從技術上講,TLS1.0與SSL3.0的差別非常微小。
1.3 SSL工作原理
SSL協議使用不對稱加密技術實現會話雙方之間信息的安全傳遞。可以實現信息傳遞的保密性、完整性,并且會話雙方能鑒別對方身份。不同于常用的http協議,我們在與網站建立SSL安全連接時使用https協議,即采用
https://ip:port/的方式來訪問。
當我們與一個網站建立https連接時,我們的瀏覽器與Web Server之間要經過一個握手的過程來完成身份鑒定與密鑰交換,從而建立安全連接。具體過程如下:
1. ? ? ?用戶瀏覽器將其SSL版本號、加密設置參數、與session有關的數據以及其它一些必要信息發送到服務器。
2. ? ? ?服務器將其SSL版本號、加密設置參數、與session有關的數據以及其它一些必要信息發送給瀏覽器,同時發給瀏覽器的還有服務器的證書。如果配置服務器的SSL需要驗證用戶身份,還要發出請求要求瀏覽器提供用戶證書。
3. ? ? ?客戶端檢查服務器證書,如果檢查失敗,提示不能建立SSL連接。如果成功,那么繼續。
4. ? ? ?客戶端瀏覽器為本次會話生成pre-master secret,并將其用服務器公鑰加密后發送給服務器。
5. ? ? ?如果服務器要求鑒別客戶身份,客戶端還要再對另外一些數據簽名后并將其與客戶端證書一起發送給服務器。
6. ? ? ?如果服務器要求鑒別客戶身份,則檢查簽署客戶證書的CA是否可信。如果不在信任列表中,結束本次會話。如果檢查通過,服務器用自己的私鑰解密收到的pre-master secret,并用它通過某些算法生成本次會話的master secret。
7. ? ? ?客戶端與服務器均使用此master secret生成本次會話的會話密鑰(對稱密鑰)。在雙方SSL握手結束后傳遞任何消息均使用此會話密鑰。這樣做的主要原因是對稱加密比非對稱加密的運算量低一個數量級以上,能夠顯著提高雙方會話時的運算速度。
8. ? ? ?客戶端通知服務器此后發送的消息都使用這個會話密鑰進行加密。并通知服務器客戶端已經完成本次SSL握手。
9. ? ? ?服務器通知客戶端此后發送的消息都使用這個會話密鑰進行加密。并通知客戶端服務器已經完成本次SSL握手。
10. ? ? ?本次握手過程結束,會話已經建立。雙方使用同一個會話密鑰分別對發送以及接受的信息進行加、解密。
1.4 所需軟件包
• ? ? ?Tomcat 4.0.6
用途:Web Server。
下載:
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.6/bin/jakarta-tomcat-4.0.6.exe• ? ? ?JDK1.4.1_02
其中已經包含了JSSE的最新版本。
• ? ? ?JSSE 1.0.3_01
用途:用來產生Tocmcat使用的密鑰對(keystore)。
下載:
http://java.sun.com/products/jsse/• ? ? ?Openssl 0.9.7b
用途:用來產生CA證書、簽名并生成IE可導入的PKCS#12格式私鑰。
下載:
http://www.openssl.org/1.5 軟件包的安裝
• ? ? ?Tomcat 4.0.6安裝(略)
• ? ? ?JSSE 1.0.3_01安裝
1. ? ? ?確定有JDK1.2以上版本(java -version);
2. ? ? ?下載JSSE ? ? ?(注意,JDK1.4已經自帶JSSE了,不需要),一般來說都只能download全球版本(還有個版本是美國/加拿大版本,加密位數沒有限制);
3. ? ? ?安裝JSSE,主要是把JSSE包內的lib/*.jar拷貝到JAVA_HOME/jre/lib/ext/下,并且加入到CLASSPATH中;
4. ? ? ?編輯JAVA_HOME/jre/lib/security/java.security文件,主要是添加:
? ? ?security.provider.1=sun.security.provider.Sun ? ? ?security.provider.2=com.sun.net.ssl.internal.ssl.Provider
5. 確定你的系統有下面文件的其中一個:
1)JAVA_HOME/jre/lib/security/jssecacerts或者 ? ? ?
2)JAVA_HOME/jre/lib/security/cacerts
? ? ?你的系統已經安裝好了JSSE,下面就是針對不同的server有不同的配置了。
• ? ? ?Openssl 0.9.7b安裝
請閱讀其解壓縮文檔中的INSTALL文件安裝openssl。
或者可以參考文件“openssl在windows平臺的安裝編譯.txt”。
二、配置步驟
2.1 建立自己的CA證書(假設openssl安裝到了c:\openssl)
1.在適當的地方建立自己的CA目錄,例如:ca
2. 我的電腦-〉右鍵-〉屬性-〉高級-〉環境變量-〉新建->administrator用戶變量-〉變量名:OPENSSL_CONF->變量值:C:\openssl\ssl\openssl.cnf
2.生成CA密鑰
openssl genrsa -out ca/ca-key.pem 1024
genrsa [產生密鑰命令] –out[密鑰文件輸出路徑] 1024 [密鑰位數]
3.生成待簽名的證書
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
req[產生證書命令]-new[新生成]-out[證書文件輸出路徑]-key[私鑰文件路徑]
4.用CA私鑰自簽名
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 365
x509[簽發x509證書命令]-req[輸入待簽發證書]-in[輸入待簽發證書文件路徑]-out[產生x509證書文件輸出路徑]-signkey[自簽發密鑰文件路徑]-days[證書有效期]–CA[簽發跟證書]-Cakey[根證書密鑰文件] –-CAcreateserial[創建序列號]
2.2 配置Tomcat 4.X
2.2.1建立服務器證書
[注] 在本文中用符號"%JDK_HOME%"來表示JDK的安裝位置,用符號"%TCAT_HOME%" 表示Tomcat的安裝位置。
1.建立工作目錄
在目錄下建立自己的server目錄,例如:server
2.生成server密鑰對
C:\j2sdk1.4.1_01\bin\keytool -genkey -alias tomcat -validity 365 -keyalg RSA -keysize 1024 -keystore server/server_keystore
? -genkey[產生密鑰對]-alias[密鑰對別名]-validity[密鑰有效期]-keyalg[密鑰算法參數]-keysize[密鑰位數]-keypass[密鑰保護密碼]-storepass[存儲密碼]-dname[別名相關附加信息]-keystore[密鑰存儲文件路徑]
[注] -alias后的tomcat是密鑰對的名字可替換為自己需要的名字;
-keypass與-storepass后的密碼為保護密碼必須6位;
其中cn是服務器的名字一定要與WEB服務器中設置的一樣。
3.生成待簽名證書
C:\j2sdk1.4.1_01\bin\keytool -certreq -alias tomcat -sigalg MD5withRSA -file server/server.csr -keypass allcom -keystore server/server_keystore -storepass allcom
-certreq[產生待簽名證書]-alias[證書別名]-sigalg[證書算法參數]-file [產生文件輸出路徑]-keypass[密鑰保護密碼]-keystore[存儲文件路徑]-storepass[存儲密碼]
4.拷貝C:\openssl\apps\ca-cert.srl文件到ca目錄
5.用CA私鑰簽名
openssl x509 -req -in server/server.csr -out server/server-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365
2.2.2將CA根證書和服務器證書導入Tomcat
1. 導入CA根證書
C:\j2sdk1.4.1_01\bin\keytool -import -v -trustcacerts -storepass allcom -alias allcom_ca_root -file ca/ca-cert.pem -keystore server/cacerts
-import[導入命令] -v–trustcacerts[導入信任證書] –storepass[存儲密碼]-alias[證書別名]-file[證書文件路徑]-keystore[導入文件路徑]-alias為CA根證書的別名。
2.拷貝cacerts文件到C:\j2sdk1.4.1_01\jre\lib\security目錄
3.導入服務器證書
C:\j2sdk1.4.1_01\bin\keytool -import -v -trustcacerts -storepass allcom -alias tomcat -file server/server-cert.pem -keystore server/server_keystore
[注] 此時的-storepass為生成證書時輸入密碼。-alias為服務器證書的別名。
4.查看證書
查看CA證書
C:\j2sdk1.4.1_01\bin\keytool -list -keystore server/cacerts
查看服務器證書
C:\j2sdk1.4.1_01\bin\keytool -list -keystore server/server_keystore
2.2.3修改Tomcat的配置文件
1.把文件server/ server_keystore復制到目錄%TCAT_HOME%/conf下
2.修改conf目錄下server.xml文件找到以下內容去掉其注釋并修改。
<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
? <Connector className="org.apache.catalina.connector.http.HttpConnector"
? ? ? ? ? port="8443" minProcessors="5" maxProcessors="75"
? ? ? ? ? enableLookups="false"
? ? ? ? ? acceptCount="10" debug="0" scheme="https" secure="true">
? ? <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
? ? ? ? ? clientAuth="true" protocol="TLS"
keystoreFile="c:/tomcat 4.0.6/conf/server_keystore" keystorePass="allcom"/>
? </Connector>
2.3 配置IE客戶端
2.3.1建立Client證書
1.建立自己的Client目錄,例如:client
2.生成Client密鑰對
openssl genrsa -out client/client-key.pem 1024
3.生成待簽名的證書
openssl req -new -out client/client-req.csr -key client/client-key.pem
4.用CA私鑰簽名
openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 365
5.生成Client端可以導入的個人證書
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
pkcs12[生成PKS12格式證書命令]-export[導出文件]-clerts[僅導出client證書]-in[輸入的client證書文件路徑]-inkey[client證書密鑰文件路徑]-out[導出PKS12格式文件路徑]
2.3.2將CA證書與client證書導入IE
1. 導入CA根證書
將目錄ca中的ca-cert.pem改名為ca-cert.cer;
在client端的IE中使用<工具>,< Internet選項>,<內容>,<證書>,<導入>,把我們生成的CA根證書導入,使其成為用戶信任的CA。
2. 導入client證書
將client證書(client.p12)導入到client端的IE中作為client證書,導入過程同上
三 用IE瀏覽器使用SSL協議訪問Tomcat
1. 執行%TCAT_HOME%/bin/startup.bat啟動Tomcat 4.0.6;
2. 在IE瀏覽器的地址欄中輸入
https://localhost:8443,如果前面的操作都正確,應該可以看到網站靜態導出的頁面,在這之前,IE提示你是否訪問安全頁面。同時狀態欄上的小鎖處于閉合狀態,表示您已經成功地與服務器建立了要求客戶端驗證的SSL安全連接