BlogJava 聯系 聚合 管理  

          Blog Stats

          隨筆分類

          隨筆檔案


          chinadave

          最近要做一個登錄時數字證書驗證的功能,在用戶登錄時除了效驗用戶名密碼,還需驗證其數字證書。

          相關資源:IBM developerWroks中國中的tomcat4中使用SSLjavaeye中的Acegi X.509雙向認證

          tomcat4中使用SSL中的異同:jdk1.4中已經包含JSSE。

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

          1.生成CA證書。目前不使用第三方權威機構的CA來認證,自己充當CA的角色。

          1.創建私鑰 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
          2.創建證書請求 :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.將證書導出成瀏覽器支持的.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.創建私鑰 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
          2.創建證書請求 :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.將證書導出成瀏覽器支持的.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.創建私鑰 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
          2.創建證書請求 :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.將證書導出成瀏覽器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey
          client/client-key.pem -out client/client.p12

          4.根據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設置為你正確的相關路徑
          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分別導入到IE中去(打開IE->;Internet選項->內容->證書)。
          root.p12導入至受信任的根證書頒發機構,client.p12導入至個人
          7.訪問你的應用http://ip:8443,如果配置正確的話會出現請求你數字證書的對話框。
          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 on 2009-12-14 11:51 whoami 閱讀(145) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 辉县市| 略阳县| 普陀区| 柏乡县| 同江市| 龙江县| 根河市| 晋中市| 柘城县| 武隆县| 安吉县| 西盟| 泰安市| 巴楚县| 拜泉县| 南澳县| 芒康县| 罗山县| 海林市| 无为县| 涡阳县| 共和县| 博客| 长武县| 察雅县| 金溪县| 黄石市| 襄汾县| 拜城县| 偏关县| 元江| 湖南省| 北宁市| 七台河市| 河东区| 宿迁市| 布拖县| 三河市| 左贡县| 子洲县| 青海省|