BlogJava 聯(lián)系 聚合 管理  

          Blog Stats

          隨筆分類

          隨筆檔案


          chinadave

          2009年12月14日 #

          Tomcat6.0 SSL的配置

          J2EE   2009-07-27 15:30   閱讀217   評(píng)論0  
          字號(hào):    

          1. 參考:

          Tomcat 6.0 自帶的文檔docs/ssl-howto.html,詳細(xì)介紹了配置過程。

          2. 目的:

                 以下詳細(xì)描述配置過程,僅作為備忘錄。

          3. 備忘錄:

          Step1,安裝tomcat 6.0.18,此為當(dāng)前最新版本,需JDK5.0或以上。

          l         JDK安裝后,可以在命令行下使用如下命令檢測是否成功。

          C:\Documents and Settings\new>java -version

          java version "1.6.0_10"

          Java(TM) SE Runtime Environment (build 1.6.0_10-b33)

          Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

          看到以上藍(lán)色信息,則表示JDK安裝配置成功。

          l         Tomcat的運(yùn)行需要配置JDK_HOMEJRE_HOME環(huán)境變量,JRE_HOME默認(rèn)等于JDK_HOME的值。

          Step2,創(chuàng)建服務(wù)器端certificate keystore和自簽名certificate

                 在命令行下使用如下命令:

          C:\Documents and Settings\new>keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore

          輸入keystore密碼:123456

          再次輸入新密碼:123456

          您的名字與姓氏是什么?

            [Unknown]  dinstone

          您的組織單位名稱是什么?

            [Unknown]  advance software ltd.

          您的組織名稱是什么?

            [Unknown]  china

          您所在的城市或區(qū)域名稱是什么?

            [Unknown]  beijing

          您所在的州或省份名稱是什么?

            [Unknown]  beijing

          該單位的兩字母國家代碼是什么

            [Unknown]  cn

          CN=dinstone, OU=advance software ltd., O=china, L=beijing, ST=beijing, C=cn 正確嗎?

            []  y

           

          輸入<mykey>的主密碼

                  (如果和 keystore 密碼相同,按回車):

          C:\Documents and Settings\new下可以找到一個(gè)文件:server.keystore,其中就包含了自簽名的證書。

          注意:

                 這里要求certificate keystore certificate的密碼一致,此為Tomcat的約束。

          Step3,在%TOMCAT_HOME%目錄下新建目錄keystore,并拷貝server.keystore到其目錄下。

          Step4,修改%TOMCAT_HOME%/conf/server.xml文件。添加httpsConnector

          <Connector

                     port="8443" minSpareThreads="5" maxSpareThreads="75"

                     enableLookups="true" disableUploadTimeout="true"

                     acceptCount="100"  maxThreads="200"

                     scheme="https" secure="true" SSLEnabled="true"

                     keystoreFile="keystore/server.keystore" keystorePass="123456"

                     clientAuth="false" sslProtocol="TLS"/>

          注意:

                 keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文件。

                 keystorePass就是剛才生成certificate keystore的密碼。

          Step5,測試Https。訪問https://localhost:8443/,提示有不安全的證書,接受證書,看到可親的tom貓。

          4. 延伸

          某些情況下,某些特定資源需要走https協(xié)議,如登錄請(qǐng)求。這時(shí),我們可以在web.xml中配置約束。

          <security-constraint>

                 <web-resource-collection>

                     <web-resource-name>SSL Resource</web-resource-name>

                     <url-pattern>/login.jsp</url-pattern>

                 </web-resource-collection>

                 <user-data-constraint>

                         <transport-guarantee>
                                 CONFIDENTIAL

          </transport-guarantee>

                 </user-data-constraint>

          </security-constraint>

          這樣當(dāng)使用如下請(qǐng)求訪問登錄頁面時(shí),則服務(wù)器將該請(qǐng)求建立在https連接上。

          http://localhost:8080/CCB/login.jsp

          posted @ 2009-12-14 17:30 whoami 閱讀(566) | 評(píng)論 (0)編輯 收藏

          最近要做一個(gè)登錄時(shí)數(shù)字證書驗(yàn)證的功能,在用戶登錄時(shí)除了效驗(yàn)用戶名密碼,還需驗(yàn)證其數(shù)字證書。

          相關(guān)資源:IBM developerWroks中國中的tomcat4中使用SSLjavaeye中的Acegi X.509雙向認(rèn)證

          tomcat4中使用SSL中的異同:jdk1.4中已經(jīng)包含JSSE。

          AcegiX.509雙向認(rèn)證中的異同:tomcat6配置文件多了SSLEnabled="true"屬性。

          1.生成CA證書。目前不使用第三方權(quán)威機(jī)構(gòu)的CA來認(rèn)證,自己充當(dāng)CA的角色。

          1.創(chuàng)建私鑰 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
          2.創(chuàng)建證書請(qǐng)求 :C:\OpenSSL\apps>openssl req -new -out root/root-req.csr -key root/root-key.pem
          3.自簽署證書 :C:\OpenSSL\apps>openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey
          root/root-key.pem -days 3650
          4.將證書導(dǎo)出成瀏覽器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey
          root/root-key.pem -out root/root.p12

          2.生成server證書。

          1.創(chuàng)建私鑰 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
          2.創(chuàng)建證書請(qǐng)求 :C:\OpenSSL\apps>openssl req -new -out server/server-req.csr -key server/server-key.pem
          3.自簽署證書 :C:\OpenSSL\apps>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey
          server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
          4.將證書導(dǎo)出成瀏覽器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey
          server/server-key.pem -out server/server.p12

          3.生成client證書。

          1.創(chuàng)建私鑰 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
          2.創(chuàng)建證書請(qǐng)求 :C:\OpenSSL\apps>openssl req -new -out client/client-req.csr -key client/client-key.pem
          3.自簽署證書 :C:\OpenSSL\apps>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey
          client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
          4.將證書導(dǎo)出成瀏覽器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey
          client/client-key.pem -out client/client.p12

          4.根據(jù)root證書生成jks文件

          C:\OpenSSL\apps\root>keytool -import -v -trustcacerts -storepass password -alias root -file root-cert.pem
          -keystore root.jks

          5.配置tomcat ssl,修改conf/server.xml。tomcat6中多了SSLEnabled="true"屬性。
          keystorefile, truststorefile設(shè)置為你正確的相關(guān)路徑
          xml 代碼
           
          1. <connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"      
          2. sslenabled="true" maxhttpheadersize="8192" maxthreads="150"      
          3. minsparethreads="25" maxsparethreads="75" enablelookups="false"      
          4. disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"      
          5. clientauth="true" keystorefile="d:/path/bin/x509/server.p12"      
          6. keystoretype="PKCS12" keystorepass="123456" truststorefile="d:/path/bin/x509/root.jks"    
          7. truststoretype="JKS" truststorepass="123456"/>    

          6.將root.p12,client.p12分別導(dǎo)入到IE中去(打開IE->;Internet選項(xiàng)->內(nèi)容->證書)。
          root.p12導(dǎo)入至受信任的根證書頒發(fā)機(jī)構(gòu),client.p12導(dǎo)入至個(gè)人
          7.訪問你的應(yīng)用http://ip:8443,如果配置正確的話會(huì)出現(xiàn)請(qǐng)求你數(shù)字證書的對(duì)話框。
          8.在jsp中取得符合x.509格式的證書
          1. <%      
          2.         //獲得certificate chain     
          3.         X509Certificate[] ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");     
          4.       if(ca==null)     
          5.       {     
          6.         out.println("No cert info!");     
          7.       } else {     
          8.         String  serial=ca[0].getSerialNumber().toString();     
          9.         String DN=ca[0].getSubjectDN().toString();       
          10.       }     
          11.       %> 


          posted @ 2009-12-14 11:51 whoami 閱讀(145) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 彭泽县| 长宁县| 海南省| 通州区| 从化市| 图木舒克市| 清河县| 额敏县| 沂水县| 大渡口区| 金华市| 特克斯县| 梅州市| 台湾省| 武陟县| 安顺市| 海晏县| 金阳县| 上林县| 宝丰县| 方城县| 田阳县| 淮北市| 南通市| 滦平县| 越西县| 石首市| 盐边县| 枣庄市| 图木舒克市| 威远县| 朔州市| 宣威市| 青岛市| 霍山县| 自治县| 宁晋县| 额济纳旗| 怀远县| 望城县| 体育|