tomcat 是 apache jakarta 的子項目之一,作為一個優秀的開源 web 應用服務器,全面支持 jsp1.2 以及 servlet2.3 規范。因其技術先進、性能穩定,而且免費,因而深受 java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的 web 應用服務器。
在網絡上信息在源 - 宿的傳遞過程中會經過其它的計算機。一般情況下,中間的計算機不會監聽路過的信息。但在使用網上銀行或者進行信用卡交易的時候有可能被監視,從而導致個人隱私的泄露。由于 internet 和 intranet 體系結構的原因,總有某些人能夠讀取并替換用戶發出的信息。隨著網上支付的不斷發展,人們對信息安全的要求越來越高。因此 netscape 公司提出了 ssl 協議,旨在達到在開放網絡 (internet) 上安全保密地傳輸信息的目的,這種協議在 web 上獲得了廣泛的應用。 之后 ietf(www.ietf.org) 對 ssl 作了標準化,即 rfc2246 ,并將其稱為 tls ( transport layer security ),從技術上講, tls1.0 與 ssl3.0 .3? ssl 工作原理
ssl協議使用不對稱加密技術實現會話雙方之間信息的安全傳遞??梢詫崿F信息傳遞的保密性、完整性,并且會話雙方能鑒別對方身份。不同于常用的http協議,我們在與網站建立ssl安全連接時使用https協議,即采用https://ip:port/的方式來訪問。
當我們與一個網站建立https連接時,我們的瀏覽器與web server之間要經過一個握手的過程來完成身份鑒定與密鑰交換,從而建立安全連接。具體過程如下:
genrsa [ 產生密鑰命令 ] ╟out [ 密鑰文件輸出路徑 ] 1024 [ 密鑰位數 ]
genrsa
[
產生密鑰命令
]
╟out
密鑰文件輸出路徑
1024 [
密鑰位數
3. 生成待簽名的證書
openssl req -new -out mageca/ca-req.csr -key mageca/ca-key.pem
req[ 產生證書命令 ]-new[ 新生成 ]-out[ 證書文件輸出路徑 ]-key[ 私鑰文件路徑]
req[
產生證書命令
]-new[
新生成
]-out[
證書文件輸出路徑
]-key[
私鑰文件路徑]
4. 用 ca 私鑰自簽名
1. 在 openssl 的 apps 目錄下建立自己的 ca 目錄,例如: mageca
mkdir mageca
2. 生成 ca 密鑰
openssl genrsa -out mageca/ca-key.pem 1024
openssl x509 -req -in mageca/ca-req.csr -out mageca/ca-cert.pem -signkey mageca/ca-key.pem -days 365
x509[ 簽發 x509 證書命令] -req[ 輸入待簽發證書 ]-in[ 輸入待簽發證書文件路徑 ]-out[ 產生 x509 證書文件輸出路徑 ]-signkey[ 自簽發密鑰文件路徑 ]-days [證書有效期 ]╟ca [簽發跟證書 ]-cakey[ 根證書密鑰文件 ] ╟cacreateserial[ 創建序列號 ]
x509[
簽發
x509
證書命令]
-req[
輸入待簽發證書
]-in[
輸入待簽發證書文件路徑
產生
]-signkey[
自簽發密鑰文件路徑
]-days
[證書有效期
]╟ca
[簽發跟證書
]-cakey[
根證書密鑰文件
] ╟cacreateserial[
創建序列號
?
[ 注 ] 將自動生成的 ca-key.srl 文件拷貝到創建的 ca 目錄下 . 。
[ 注 ] 在本文中用符號 "%jdk_home%" 來表示 jdk 的安裝位置,用符號 "%tcat_home%" 表示 tomcat 的安裝位置。
1. ??????? 建立工作目錄
在 %jdk_home% 的 bin 目錄下建立自己的 server 目錄,例如: server
mkdir server
2. ??????? 生成 server 密鑰對
%jdk_home% /bin/keytool -genkey -alias tomcat_server -validity 365 -keyalg rsa -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=beijing, st=beijing, c=cn" -keystore server/server_keystore
/bin/keytool -genkey -alias tomcat_server -validity 365 -keyalg rsa -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=beijing, st=beijing, c=cn" -keystore server/server_keystore
?-genkey[ 產生密鑰對 ]-alias[ 密鑰對別名 ]-validity[ 密鑰有效期 ]-keyalg[ 密鑰算法參數 ]-keysize[ 密鑰位數 ]-keypass[ 密鑰保護密碼 ]-storepass[ 存儲密碼 ]-dname[ 別名相關附加信息 ]-keystore[ 密鑰存儲文件路徑 ]
?-genkey[
產生密鑰對
]-alias[
密鑰對別名
]-validity[
密鑰有效期
]-keyalg[
密鑰算法參數
]-keysize[
]-keypass[
密鑰保護密碼
]-storepass[
存儲密碼
]-dname[
別名相關附加信息
]-keystore[
密鑰存儲文件路徑
[ 注 ]? -alias 后的 tomcat_server 是密鑰對的名字可替換為自己需要的名字;
-keypass 與 -storepass 后的 changeit 為保護密碼必須 6 位,將其替換為你的密碼即可;
-dname 為包含的 server 信息。其中 cn 是服務器的名字一定要與 web 服務器中設置的一樣。
3. ??????? 生成待簽名證書
%jdk_home% /bin/keytool -certreq -alias tomcat_server -sigalg md5withrsa -file server/server.csr -keypass changeit -keystore server/server_keystore -storepass changeit
/bin/keytool -certreq -alias tomcat_server -sigalg md5withrsa -file server/server.csr -keypass changeit -keystore server/server_keystore -storepass changeit
-certreq[ 產生待簽名證書 ]-alias[ 證書別名 ]-sigalg[ 證書算法參數 ]-file [ 產生文件輸出路徑 ]-keypass[ 密鑰保護密碼 ]-keystore[ 存儲文件路徑 ]-storepass[ 存儲密碼]
-certreq[
產生待簽名證書
證書別名
]-sigalg[
證書算法參數
]-file [
產生文件輸出路徑
存儲文件路徑
存儲密碼]
4. ??????? 用 ca 私鑰簽名
openssl x509 -req -in server/server.csr -out server/server-cert.pem -ca mageca/ca-cert.pem -cakey mageca/ca-key.pem -days 365
[注] 先將生成的 server.csr 文件 ftp 到 linux 上 openssl 的目錄下的 server 子目錄中, ftp 的傳輸模式應設為 bin 模式,以下同。
[注]
1. ??????? 導入 ca 根證書
將 ca 根證書( ca-cert.pem ) ftp 到 java 工作目錄下的 ca 子目錄中
%jdk_home%/bin/keytool -import -v -trustcacerts -storepass changeit -alias my_ca_root -file ca/ca-cert.pem -keystore %jdk_home%/jre/lib/security/cacerts
-import[ 導入命令 ]-v ╟trustcacerts[ 導入信任證書 ] ╟storepass[ 存儲密碼 ]-alias[ 證書別名 ]-file[ 證書文件路徑 ]-keystore[ 導入文件路徑 ]
-import[
導入命令
]-v ╟trustcacerts[
導入信任證書
] ╟storepass[
]-file[
證書文件路徑
導入文件路徑
[ 注 ] 此處的 -storepass 為默認的“ changeit ”。 -alias 為 ca 根證書的別名。
2. ??????? 導入服務器證書
將服務器證書( server-cert.pem ) ftp 到 java 工作目錄下的 server 子目錄中。
%jdk_home%/bin/keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server/server-cert.pem -keystore server/server_keystore
[ 注 ] 此時的 -storepass 為生成證書時輸入密碼。 -alias 為服務器證書的別名。
3. ??????? 查看證書
查看ca證書
keytool -list -keystore %jdk_home%/jre/lib/security/cacerts
查看服務器證書
keytool -list -keystore server/server_keystore
修改 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:/jakarta-tomcat-4.0-b1/conf/server_keystore" keystorepass="780608"
/>
??? </connector>
然后把文件 server/ server_keystore 復制到目錄 %tcat_home%\conf\ 下
1. ??????? ?openssl 的 apps 目錄下建立自己的 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 c lient/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格式文件路徑]
pkcs12[
生成pks12格式證書命令
]-export[
導出文件
]-clerts[
僅導出client證書
輸入的client證書文件路徑
]-inkey[
client證書密鑰文件路徑
導出pks12格式文件路徑]
將已經 ftp 到 java 工作目錄下 ca 子目錄中的 ca-cert.pem 改名為 ca-cert.cer ;
在 client 端的 ie 中使用 < 工具 >,< internet 選項 >,< 內容 >,< 證書 >,< 導入 >, 把我們生成的 ca 根證書導入,使其成為用戶信任的 ca 。
2. ??????? 導入 client 證書
將 client 證書( client.p12 ) ftp 到 client 端,把 client.p12 導入到 client 端的 ie 中作為 client 證書,導入過程同上
1. ??????? 執行 %tcat_home%/bin/startup.bat 啟動 tomcat 4.x ;
2. ??????? 在 ie 瀏覽器的地址欄中輸入 https://localhost:8443 ,如果前面的操作都正確,應該可以看到 tomcat 的歡迎頁面。同時狀態欄上的小鎖處于閉合狀態,表示您已經成功地與服務器建立了要求客戶端驗證的 ssl 安全連接。
posted on 2006-07-18 16:40 liujg 閱讀(755) 評論(0) 編輯 收藏
Powered by: BlogJava Copyright © liujg