<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    目前介紹配置Tomcat 4使用單向SSL認證(只驗證服務(wù)器證書)的資料很多,過程也比較簡單。但是由于配置其使用雙向SSL認證(還需要驗證客戶端個人證書)除了需要CA對證 書簽名外,還要從CA獲得個人證書。有關(guān)這一問題,目前結(jié)合具體web服務(wù)器來講解如何操作的資料很少。作者通過摸索借助一些SSL工具在本地實現(xiàn)了簡單 的CA功能,并在此基礎(chǔ)上配置成功了Tomcat的雙向認證,希望能把其中的一些經(jīng)驗與大家共享。不過受本人水平所限,文中難免會有錯誤與不當之處,敬請 大家諒解。

    1.Tomcat簡介
    Tomcat 是Apache Jakarta的子項目之一,作為一個優(yōu)秀的開源web應(yīng)用服務(wù)器,全面支持jsp1.2以及servlet2.3規(guī)范。因其技術(shù)先進、性能穩(wěn)定,而且免 費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的web應(yīng)用服務(wù)器。

    2.SSL(Server Socket Layer)簡介
    在 網(wǎng)絡(luò)上信息在源-宿的傳遞過程中會經(jīng)過其它的計算機。一般情況下,中間的計算機不會監(jiān)聽路過的信息。但在使用網(wǎng)上銀行或者進行信用卡交易的時候有可能被監(jiān) 視,從而導(dǎo)致個人隱私的泄露。由于Internet和Intranet體系結(jié)構(gòu)的原因,總有某些人能夠讀取并替換用戶發(fā)出的信息。隨著網(wǎng)上支付的不斷發(fā) 展,人們對信息安全的要求越來越高。因此Netscape公司提出了SSL協(xié)議,旨在達到在開放網(wǎng)絡(luò)(Internet)上安全保密地傳輸信息的目的,這 種協(xié)議在WEB上獲得了廣泛的應(yīng)用。之后IETF(www.ietf.org)對SSL作了標準化,即RFC2246,并將其稱為TLS (Transport Layer Security),從技術(shù)上講,TLS1.0與SSL3.0的差別非常微小。

    3.SSL工作原理
    SSL協(xié)議使用不對稱加密技術(shù)實現(xiàn)會話雙方之間信息的安全傳遞??梢詫崿F(xiàn)信息傳遞的保密性、完整性,并且會話雙方能鑒別對方身份。不同于常用的http協(xié)議,我們在與網(wǎng)站建立SSL安全連接時使用https協(xié)議,即采用https://ip:port/的方式來訪問。

    當我們與一個網(wǎng)站建立https連接時,我們的瀏覽器與Web Server之間要經(jīng)過一個握手的過程來完成身份鑒定與密鑰交換,從而建立安全連接。具體過程如下:

    1. 用戶瀏覽器將其SSL版本號、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送到服務(wù)器。
    2. 服務(wù)器將其SSL版本號、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送給瀏覽器,同時發(fā)給瀏覽器的還有服務(wù)器的證書。如果配置服務(wù)器的SSL需要驗證用戶身份,還要發(fā)出請求要求瀏覽器提供用戶證書。
    3. 客戶端檢查服務(wù)器證書,如果檢查失敗,提示不能建立SSL連接。如果成功,那么繼續(xù)。
    4. 客戶端瀏覽器為本次會話生成pre-master secret,并將其用服務(wù)器公鑰加密后發(fā)送給服務(wù)器。
    5. 如果服務(wù)器要求鑒別客戶身份,客戶端還要再對另外一些數(shù)據(jù)簽名后并將其與客戶端證書一起發(fā)送給服務(wù)器。
    6. 如果服務(wù)器要求鑒別客戶身份,則檢查簽署客戶證書的CA是否可信。如果不在信任列表中,結(jié)束本次會話。如果檢查通過,服務(wù)器用自己的私鑰解密收到的pre-master secret,并用它通過某些算法生成本次會話的master secret。
    7. 客戶端與服務(wù)器均使用此master secret生成本次會話的會話密鑰(對稱密鑰)。在雙方SSL握手結(jié)束后傳遞任何消息均使用此會話密鑰。這樣做的主要原因是對稱加密比非對稱加密的運算量低一個數(shù)量級以上,能夠顯著提高雙方會話時的運算速度。
    8. 客戶端通知服務(wù)器此后發(fā)送的消息都使用這個會話密鑰進行加密。并通知服務(wù)器客戶端已經(jīng)完成本次SSL握手。
    9. 服務(wù)器通知客戶端此后發(fā)送的消息都使用這個會話密鑰進行加密。并通知客戶端服務(wù)器已經(jīng)完成本次SSL握手。
    10. 本次握手過程結(jié)束,會話已經(jīng)建立。雙方使用同一個會話密鑰分別對發(fā)送以及接受的信息進行加、解密。

    4.配置Tomcat 4.x 使用SSL

    4.1 用到的軟件包

    以上工具的安裝過程可以參考自帶的幫助,本文就不再詳細描述了。

    4.2 建立自己的CA

    4.2.1 建立工作目錄
    mkdir ca

    4.2.2 生成CA私鑰以及自簽名根證書
    4.2.2.1 生成CA私鑰
    openssl genrsa -out ca"ca-key.pem 1024

    4.2.2.2 生成待簽名證書
    openssl req -new -out ca"ca-req.csr -key ca"ca-key.pem

    4.2.2.3 用CA私鑰進行自簽名
    openssl x509 -req -in ca"ca-req.csr -out ca"ca-cert.pem -signkey ca"ca-key.pem -days 365

    4.3 設(shè)置Tomcat 4.x
    在本文中用符號"%JDK_HOME%"來表示JDK的安裝位置,用符號"%TCAT_HOME%" 表示Tomcat的安裝位置。

    4.3.1建立工作目錄
    mkdir server

    4.3.2 生成server端證書
    4.3.2.1 生成KeyPair
    %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

    4.3.2.2 生成待簽名證書
    %JDK_HOME%"bin"keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server"server.csr -keypass changeit -keystore server"server_keystore -storepass changeit

    4.3.2.3 用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

    4.3.2.4 導(dǎo)入信任的CA根證書到JSSE的默認位置(%JDK_ROOT %/jre/security/cacerts)
    %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

    4.3.2.5 把CA簽名后的server端證書導(dǎo)入keystore
    %JDK_HOME%"bin"keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server"server-cert.pem -keystore server"server_keystore

    4.3.2.6 查看server端證書
    keytool -list -keystore %JDK_HOME%"jre"lib"security"cacerts
    keytool -list -keystore server"server_keystore

    4.3.3 修改server.xml使Tomcat支持SSL
    首先找到以下內(nèi)容,去掉對其的注釋。然后參照紅色部分修改。如果配置Tomcat不驗證客戶身份,可以設(shè)置clientAuth="false"。
      <Connector className="org.apache.catalina.connector.http.HttpConnector"
    port="8443" minProcessors="5" maxProcessors="75"
    enableLookups="true"
    acceptCount="10" debug="0" scheme="https" secure="true">
    <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
    clientAuth="true" protocol="TLS"
    keystoreFile="%TCAT_HOME%/conf/server_keystore" keystorePass="changeit"
    />
    </Connector>
    然后把文件server"server_keystore復(fù)制到目錄%TCAT_HOME%"conf"下。

    4.4 在IE中安裝個人證書
    4.4.1 建立工作目錄
    mkdir client

    4.4.2 生成client私鑰并用CA私鑰簽名

    4.4.2.1 生成client私鑰
    openssl genrsa -out client"client-key.pem 1024

    4.4.2.2 生成待簽名證書
    openssl req -new -out client"client-req.csr -key client"client-key.pem

    4.4.2.3 用CA私鑰進行簽名
    openssl x509 -req -in client"client-req.csr -out client"client.crt -signkey client"client-key.pem -CA ca"ca-cert.pem -CAkey ca"ca-key.pem -CAcreateserial -days 365

    4.4.2.4 生成client端的個人證書
    因為JSSE1.0.2沒有完全實現(xiàn)了對PKCS#12格式文件的操作(只能讀取,不能輸出),所以在這里需要用openssl制作client端的個人證書(包含私鑰)。
    openssl pkcs12 -export -clcerts -in client"client.crt -inkey client"client-key.pem -out client"client.p12

    4.4.2.5 安裝信任的根證書
    把ca"ca-key.pem改名為ca"ca-key.cer,在client端的IE中使用"工具 ' Internet選項 ' 內(nèi)容 ' 證書 ' 導(dǎo)入"把我們生成的CA根證書導(dǎo)入,使其成為用戶信任的CA。

    4.4.3 安裝個人證書
    把client.p12導(dǎo)入到client端的IE中作為個人證書,導(dǎo)入過程同4.4.2.5。

    4.5 用IE瀏覽器使用SSL協(xié)議訪問Tomcat

    4.5.1 啟動Tomcat 4.x
    執(zhí)行%TCAT_HOME%"bin"startup.bat啟動Tomcat 4.x

    4.5.2 用IE訪問Tomcat 4.x
    在IE瀏覽器的地址欄中輸入https://localhost:8443,如果前面的操作都正確的話,應(yīng)該可以看到Tomcat的歡迎頁面。同時狀態(tài)欄上的小鎖處于閉合狀態(tài),表示您已經(jīng)成功地與服務(wù)器建立了要求客戶端驗證的SSL安全連接。

    5 結(jié)論
    以 上我們實現(xiàn)了為Tomcat 4.x配置要求客戶端驗證的SSL的全過程。對于其它類型的服務(wù)器,例如Apache,Netscape Enterprise Server, Websphere,Weblogic等,一般只是在服務(wù)器端保存證書的方式略有不同,但它們的原理都是類似的,配置時可以在本文中辦法的基礎(chǔ)上做出相應(yīng) 的調(diào)整。

    參考資料

    posted on 2008-02-13 21:53 禮物 閱讀(468) 評論(0)  編輯  收藏 所屬分類: CA
    主站蜘蛛池模板: 精品97国产免费人成视频| 亚洲人成网77777色在线播放| 在线观看免费无码视频| 亚洲日韩AV无码一区二区三区人| 国产v亚洲v天堂无码网站| ass亚洲**毛茸茸pics| 亚洲中文字幕无码久久2017 | 亚洲AV本道一区二区三区四区| 国产美女无遮挡免费视频网站| 台湾一级毛片永久免费| 国产精品白浆在线观看免费| 亚洲视频在线免费| 亚洲国产成人久久综合一| 五月亭亭免费高清在线| 成人影片一区免费观看| a一级爱做片免费| 猫咪免费观看人成网站在线| 亚洲日韩AV无码一区二区三区人| 亚洲av产在线精品亚洲第一站| 亚洲精品成人av在线| 久久国产亚洲精品麻豆| 久久亚洲国产欧洲精品一| 久久久久噜噜噜亚洲熟女综合| 亚洲AV无码一区二三区| 免费A级毛片在线播放不收费| 日韩电影免费在线观看视频 | 亚洲天堂中文资源| 亚洲AV无码第一区二区三区 | 国产成人无码精品久久久久免费 | 免费在线观看a级毛片| 国产小视频在线观看免费| 日韩免费观看的一级毛片| 免费看的成人yellow视频| 日韩免费一区二区三区| 免费看香港一级毛片| 免费无遮挡无码永久在线观看视频| 免费无码看av的网站| 国产一级高清免费观看| 亚洲AV无码乱码在线观看性色扶| 免费国产成人午夜电影| 免费人成在线观看播放国产|