程序人生

          程序人生

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            3 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
          《google搜的 具體地址忘了》
          一、配置環(huán)境
          1.1 Tomcat簡(jiǎn)介
          Tomcat是Apache Jakarta的子項(xiàng)目之一,作為一個(gè)優(yōu)秀的開(kāi)源web應(yīng)用服務(wù)器,全面支持jsp1.2以及servlet2.3規(guī)范。因其技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的web應(yīng)用服務(wù)器。
          1.2 SSL(Server Socket Layer)簡(jiǎn)介
          在網(wǎng)絡(luò)上信息在源-宿的傳遞過(guò)程中會(huì)經(jīng)過(guò)其它的計(jì)算機(jī)。一般情況下,中間的計(jì)算機(jī)不會(huì)監(jiān)聽(tīng)路過(guò)的信息。但在使用網(wǎng)上銀行或者進(jìn)行信用卡交易的時(shí)候有可能被監(jiān)視,從而導(dǎo)致個(gè)人隱私的泄露。由于Internet和Intranet體系結(jié)構(gòu)的原因,總有某些人能夠讀取并替換用戶發(fā)出的信息。隨著網(wǎng)上支付的不斷發(fā)展,人們對(duì)信息安全的要求越來(lái)越高。因此Netscape公司提出了SSL協(xié)議,旨在達(dá)到在開(kāi)放網(wǎng)絡(luò)(Internet)上安全保密地傳輸信息的目的,這種協(xié)議在WEB上獲得了廣泛的應(yīng)用。 之后IETF(www.ietf.org)對(duì)SSL作了標(biāo)準(zhǔn)化,即RFC2246,并將其稱為TLS(Transport Layer Security),從技術(shù)上講,TLS1.0與SSL3.0的差別非常微小。
          1.3 SSL工作原理
          SSL協(xié)議使用不對(duì)稱加密技術(shù)實(shí)現(xiàn)會(huì)話雙方之間信息的安全傳遞。可以實(shí)現(xiàn)信息傳遞的保密性、完整性,并且會(huì)話雙方能鑒別對(duì)方身份。不同于常用的http協(xié)議,我們?cè)谂c網(wǎng)站建立SSL安全連接時(shí)使用https協(xié)議,即采用https://ip:port/的方式來(lái)訪問(wèn)。
          當(dāng)我們與一個(gè)網(wǎng)站建立https連接時(shí),我們的瀏覽器與Web Server之間要經(jīng)過(guò)一個(gè)握手的過(guò)程來(lái)完成身份鑒定與密鑰交換,從而建立安全連接。具體過(guò)程如下:
          1. ? ? ?用戶瀏覽器將其SSL版本號(hào)、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送到服務(wù)器。
          2. ? ? ?服務(wù)器將其SSL版本號(hào)、加密設(shè)置參數(shù)、與session有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送給瀏覽器,同時(shí)發(fā)給瀏覽器的還有服務(wù)器的證書。如果配置服務(wù)器的SSL需要驗(yàn)證用戶身份,還要發(fā)出請(qǐng)求要求瀏覽器提供用戶證書。
          3. ? ? ?客戶端檢查服務(wù)器證書,如果檢查失敗,提示不能建立SSL連接。如果成功,那么繼續(xù)。
          4. ? ? ?客戶端瀏覽器為本次會(huì)話生成pre-master secret,并將其用服務(wù)器公鑰加密后發(fā)送給服務(wù)器。
          5. ? ? ?如果服務(wù)器要求鑒別客戶身份,客戶端還要再對(duì)另外一些數(shù)據(jù)簽名后并將其與客戶端證書一起發(fā)送給服務(wù)器。
          6. ? ? ?如果服務(wù)器要求鑒別客戶身份,則檢查簽署客戶證書的CA是否可信。如果不在信任列表中,結(jié)束本次會(huì)話。如果檢查通過(guò),服務(wù)器用自己的私鑰解密收到的pre-master secret,并用它通過(guò)某些算法生成本次會(huì)話的master secret。
          7. ? ? ?客戶端與服務(wù)器均使用此master secret生成本次會(huì)話的會(huì)話密鑰(對(duì)稱密鑰)。在雙方SSL握手結(jié)束后傳遞任何消息均使用此會(huì)話密鑰。這樣做的主要原因是對(duì)稱加密比非對(duì)稱加密的運(yùn)算量低一個(gè)數(shù)量級(jí)以上,能夠顯著提高雙方會(huì)話時(shí)的運(yùn)算速度。
          8. ? ? ?客戶端通知服務(wù)器此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知服務(wù)器客戶端已經(jīng)完成本次SSL握手。
          9. ? ? ?服務(wù)器通知客戶端此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知客戶端服務(wù)器已經(jīng)完成本次SSL握手。
          10. ? ? ?本次握手過(guò)程結(jié)束,會(huì)話已經(jīng)建立。雙方使用同一個(gè)會(huì)話密鑰分別對(duì)發(fā)送以及接受的信息進(jìn)行加、解密。
          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
          其中已經(jīng)包含了JSSE的最新版本。
          • ? ? ?JSSE 1.0.3_01
          用途:用來(lái)產(chǎn)生Tocmcat使用的密鑰對(duì)(keystore)。
          下載: http://java.sun.com/products/jsse/
          • ? ? ?Openssl 0.9.7b
          用途:用來(lái)產(chǎn)生CA證書、簽名并生成IE可導(dǎo)入的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已經(jīng)自帶JSSE了,不需要),一般來(lái)說(shuō)都只能download全球版本(還有個(gè)版本是美國(guó)/加拿大版本,加密位數(shù)沒(méi)有限制);
          3. ? ? ?安裝JSSE,主要是把JSSE包內(nèi)的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. 確定你的系統(tǒng)有下面文件的其中一個(gè):
          1)JAVA_HOME/jre/lib/security/jssecacerts或者 ? ? ?
          2)JAVA_HOME/jre/lib/security/cacerts

          ? ? ?你的系統(tǒng)已經(jīng)安裝好了JSSE,下面就是針對(duì)不同的server有不同的配置了。
          • ? ? ?Openssl 0.9.7b安裝
          請(qǐng)閱讀其解壓縮文檔中的INSTALL文件安裝openssl。
          或者可以參考文件“openssl在windows平臺(tái)的安裝編譯.txt”。
          二、配置步驟
          2.1 建立自己的CA證書(假設(shè)openssl安裝到了c:\openssl)
          1.在適當(dāng)?shù)牡胤浇⒆约旱腃A目錄,例如:ca
          2. 我的電腦-〉右鍵-〉屬性-〉高級(jí)-〉環(huán)境變量-〉新建->administrator用戶變量-〉變量名:OPENSSL_CONF->變量值:C:\openssl\ssl\openssl.cnf
          2.生成CA密鑰
          openssl genrsa -out ca/ca-key.pem 1024
          genrsa [產(chǎn)生密鑰命令] –out[密鑰文件輸出路徑] 1024 [密鑰位數(shù)]
          3.生成待簽名的證書
          openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
          req[產(chǎn)生證書命令]-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[簽發(fā)x509證書命令]-req[輸入待簽發(fā)證書]-in[輸入待簽發(fā)證書文件路徑]-out[產(chǎn)生x509證書文件輸出路徑]-signkey[自簽發(fā)密鑰文件路徑]-days[證書有效期]–CA[簽發(fā)跟證書]-Cakey[根證書密鑰文件] –-CAcreateserial[創(chuàng)建序列號(hào)]
          2.2 配置Tomcat 4.X
          2.2.1建立服務(wù)器證書
          [注] 在本文中用符號(hào)"%JDK_HOME%"來(lái)表示JDK的安裝位置,用符號(hào)"%TCAT_HOME%" 表示Tomcat的安裝位置。
          1.建立工作目錄
          在目錄下建立自己的server目錄,例如:server
          2.生成server密鑰對(duì)
          C:\j2sdk1.4.1_01\bin\keytool -genkey -alias tomcat -validity 365 -keyalg RSA -keysize 1024 -keystore server/server_keystore
          ? -genkey[產(chǎn)生密鑰對(duì)]-alias[密鑰對(duì)別名]-validity[密鑰有效期]-keyalg[密鑰算法參數(shù)]-keysize[密鑰位數(shù)]-keypass[密鑰保護(hù)密碼]-storepass[存儲(chǔ)密碼]-dname[別名相關(guān)附加信息]-keystore[密鑰存儲(chǔ)文件路徑]
          [注] -alias后的tomcat是密鑰對(duì)的名字可替換為自己需要的名字;
          -keypass與-storepass后的密碼為保護(hù)密碼必須6位;
          其中cn是服務(wù)器的名字一定要與WEB服務(wù)器中設(shè)置的一樣。
          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[產(chǎn)生待簽名證書]-alias[證書別名]-sigalg[證書算法參數(shù)]-file [產(chǎn)生文件輸出路徑]-keypass[密鑰保護(hù)密碼]-keystore[存儲(chǔ)文件路徑]-storepass[存儲(chǔ)密碼]
          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根證書和服務(wù)器證書導(dǎo)入Tomcat
          1. 導(dǎo)入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[導(dǎo)入命令] -v–trustcacerts[導(dǎo)入信任證書] –storepass[存儲(chǔ)密碼]-alias[證書別名]-file[證書文件路徑]-keystore[導(dǎo)入文件路徑]-alias為CA根證書的別名。
          2.拷貝cacerts文件到C:\j2sdk1.4.1_01\jre\lib\security目錄
          3.導(dǎo)入服務(wù)器證書
          C:\j2sdk1.4.1_01\bin\keytool -import -v -trustcacerts -storepass allcom -alias tomcat -file server/server-cert.pem -keystore server/server_keystore
          [注] 此時(shí)的-storepass為生成證書時(shí)輸入密碼。-alias為服務(wù)器證書的別名。
          4.查看證書
          查看CA證書
          C:\j2sdk1.4.1_01\bin\keytool -list -keystore server/cacerts
          查看服務(wù)器證書
          C:\j2sdk1.4.1_01\bin\keytool -list -keystore server/server_keystore
          2.2.3修改Tomcat的配置文件
          1.把文件server/ server_keystore復(fù)制到目錄%TCAT_HOME%/conf下
          2.修改conf目錄下server.xml文件找到以下內(nèi)容去掉其注釋并修改。
          <!-- 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密鑰對(duì)
          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端可以導(dǎo)入的個(gè)人證書
          openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
          pkcs12[生成PKS12格式證書命令]-export[導(dǎo)出文件]-clerts[僅導(dǎo)出client證書]-in[輸入的client證書文件路徑]-inkey[client證書密鑰文件路徑]-out[導(dǎo)出PKS12格式文件路徑]
          2.3.2將CA證書與client證書導(dǎo)入IE
          1. 導(dǎo)入CA根證書
          將目錄ca中的ca-cert.pem改名為ca-cert.cer;
          在client端的IE中使用<工具>,< Internet選項(xiàng)>,<內(nèi)容>,<證書>,<導(dǎo)入>,把我們生成的CA根證書導(dǎo)入,使其成為用戶信任的CA。
          2. 導(dǎo)入client證書
          將client證書(client.p12)導(dǎo)入到client端的IE中作為client證書,導(dǎo)入過(guò)程同上
          三 用IE瀏覽器使用SSL協(xié)議訪問(wèn)Tomcat
          1. 執(zhí)行%TCAT_HOME%/bin/startup.bat啟動(dòng)Tomcat 4.0.6;
          2. 在IE瀏覽器的地址欄中輸入https://localhost:8443,如果前面的操作都正確,應(yīng)該可以看到網(wǎng)站靜態(tài)導(dǎo)出的頁(yè)面,在這之前,IE提示你是否訪問(wèn)安全頁(yè)面。同時(shí)狀態(tài)欄上的小鎖處于閉合狀態(tài),表示您已經(jīng)成功地與服務(wù)器建立了要求客戶端驗(yàn)證的SSL安全連接
          posted on 2006-03-18 14:23 程序人生 閱讀(1310) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 舟山市| 定远县| 蓬安县| 驻马店市| 青岛市| 吕梁市| 砚山县| 永定县| 柳林县| 江门市| 盐池县| 富阳市| 依安县| 卓尼县| 玉树县| 木兰县| 洪江市| 长寿区| 遂平县| 邳州市| 精河县| 伊吾县| 安顺市| 读书| 剑河县| 南召县| 静海县| 万盛区| 五原县| 沁阳市| 图木舒克市| 儋州市| 沽源县| 达州市| 喀喇| 房产| 正蓝旗| 三河市| 寻甸| 镇康县| 安塞县|