世界因你而精彩  
          日歷
          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456
          統計
          • 隨筆 - 169
          • 文章 - 1
          • 評論 - 138
          • 引用 - 0

          導航

          常用鏈接

          留言簿(9)

          隨筆分類(163)

          隨筆檔案(154)

          文章檔案(1)

          新聞檔案(1)

          相冊

          收藏夾(1)

          個人雜雜

          友情鏈接

          自學考試

          資料搜索

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 359414
          • 排名 - 153

          最新評論

          閱讀排行榜

          評論排行榜

           
           導出和導入證書

           

          為了解釋清楚如何輸出和輸入證書,我會使用我自己的 HTTPS 服務器。這個服務器在第一部分中討論過。然后,跟著下面的內容開始:

          1、運行 HTTPS 服務器,像在第一部分中討論的那樣。

          2、運行 ReadHttpsURL1:java ReadHttpsURL1 localhost。你同樣會得到上面所述的異常。

          3、使用下面的 keytool 命令導出服務器證書:

          o 從 serverkeys 文件中導出別名為 qusay 的證書

          o 將導出的證書保存在 server.cert 文件中,這個文件會由 keytool 創建

          如你看到的那樣,我根據要求輸入了密碼。成功輸入密碼之后,服務器證書被成功的導出并保存在 server.cert 中。

          Prompt> keytool -export -keystore serverkeys -alias qusay -file server.cert

          Enter keystore password: hellothere

          Certificate stored in file

          4、將文件 server.cert 拷貝到 ReadHttpsURL1 所在的目錄。使用 keytool 創建一個新的 keystore 并將服務器的 server.cert 證書導入其中。這里的命令示例:

          Prompt> keytool -import -keystore trustedcerts -alias qusay -file server.cert

          這個命令會產生下面那樣的輸出。它要求輸入密碼,這是一個新的密碼,用于 trustedcerts 這個 keystore 的。這個 keystore 由 keytool 創建。在輸出信息的最后,它詢問我是否愿意相信這個證書,我回答 yes。

          Enter keystore password: clientpass

          Owner: CN=localhost, OU=Training and Consulting, O=javacourses.com, L=Toronto, ST=Ontario, C=CA

          Issuer: CN=localhost, OU=Training and Consulting, O=javacourses.com, L=Toronto, ST=Ontario, C=CA

          Serial number: 3dcf988a

          Valid from: Mon Nov 11 06:46:18 EST 2002 until: Sun Feb 09 06:46:18 EST 2003

          Certificate fingerprints:

          MD5: 37:35:4D:3A:2B:7E:B5:09:A5:41:B3:FA:E4:3C:1D:C4

          SHA1: CB:7C:77:36:79:A2:37:26:E2:98:61:C2:9D:10:50:69:

          99:F9:B9:1B

          Trust this certificate? [no]: yes

          Certificate was added to keystore

          5、現在運行 ReadHttpsURL1 并告訴它哪里能找到證書。使用下面的命令:

          Prompt> java -Djavax.net.ssl.trustStore=trustedcerts ReadHttpsURL1 localhost

          這將會與你的 HTTPS 服務器聯接、校驗證書,如果正確,它會下載默認頁面 index.html。

          注意:信任管理器負責決定遠端的證書是否值得信任。它使用下面的規則:

          1、如果 javax.net.sll.trustStore 系統屬性指定了信任庫,那么信任管理器會使用提供的文件來檢查證書。如果那個系統屬性存在但指定的文件不存在,那么就沒有使用任何信任庫,會拋出一個 CertificateException 異常。

          2、如果 javax.net.sll.trustStore 系統屬性沒有定義,那么它會去尋找默認的信任庫:

          如果在你的 java.home 目錄的 lib/security 子目錄下存在名為 jssecacerts 的信任庫,那么使用的就是它。

          如果 jssecacerts 不存在,但是 cacerts 存在 (它隨 J2SDK 一起發行,含有數量有限的可信任的基本證書),使用的就是 cacerts。

          在我的 Windows 2000 客戶機中,java.home 目錄是 c:\Program File\java\jre1.4.1\lib\security,在上例中,如果你將 trustedcerts 更名為 jssecacerts 并將其移動到 lib/security 子目錄中,那么你以后就不需要在命令行指定 javax.net.ssl.trustStore 屬性了。

          如果你不知道 java.home 在哪里,這里有一小段代碼可以讓你找到它:

                      

          public class FindJavaHome {

          public static void main(String argv[]) {

          System.out.println(System.getProperty("java.home"));

          }

          }




          =========================
          說明:

          cacerts: 自定義信任庫密碼是wshr.ut
          testkeystore:證書庫存放了服務器證書和對應的私鑰.
          my.cer: 被CA簽名后的服務器證書,以導入testkeystore
          HBCA.cer: CA的根證書,以導入到cacerts,testkeystore,需要導入IE.
          測試單證02.pfx:   CA簽發的一個個人證書,需要導入到IE
          MyHTTPSServerAuth.java   : 實現SSL服務的JAVA代碼.

          我得jdk是j2sdk1.4.2_01的,我把上面的那些全放在JDK的bin目錄下方便使用那個keytool來調試.
          證書時我搭的一個CA來簽的,.

          部分過程:
          C:\j2sdk1.4.2_01\bin>keytool -genkey -dname "CN=www.my.com,OU=hbca,O=hbca,L=wuhan,S=hubei,C=CN" -alias test -keyalg RSA -keystore testkeystore -keypass wshr.ut -storepass wshr.ut

          C:\j2sdk1.4.2_01\bin>keytool -certreq -keystore testkeystore -alias test -file test.csr -storepass wshr.ut

          C:\j2sdk1.4.2_01\bin>keytool  -import -alias CA -file hbca.cer  -keystore testkeystore
          輸入keystore密碼:  wshr.ut
          Owner: C=CN, O=TEST, CN=HBCA
          發照者: C=CN, O=TEST, CN=HBCA
          序號: 2aed19e4a2900b69e9a307700439a1d1
          有效期間: Thu Sep 22 11:36:25 CST 2005 至: Sat Jun 01 11:36:25 CST 2019
          認證指紋:
                   MD5:  DB:32:5B:CA:EB:79:D2:40:F4:5C:65:87:4F:8B:93:8D
                   SHA1: C3:68:DC:A5:1E:DC:A9:07:60:CF:5D:38:A3:4C:10:67:28:20:6F:A3
          信任這個認證? [否]:  y
          認證已添加至keystore中

          C:\j2sdk1.4.2_01\bin>keytool  -import -alias test -file my.cer  -keystore testkeystore
          輸入keystore密碼:  wshr.ut
          認證回復已安裝在 keystore中
          C:\j2sdk1.4.2_01\bin>keytool  -import -alias test -file hbca.cer  -keystore cacerts
          輸入keystore密碼:  wshr.ut
          Owner: C=CN, O=TEST, CN=HBCA
          發照者: C=CN, O=TEST, CN=HBCA
          序號: 2aed19e4a2900b69e9a307700439a1d1
          有效期間: Thu Sep 22 11:36:25 CST 2005 至: Sat Jun 01 11:36:25 CST 2019
          認證指紋:
                   MD5:  DB:32:5B:CA:EB:79:D2:40:F4:5C:65:87:4F:8B:93:8D
                   SHA1: C3:68:DC:A5:1E:DC:A9:07:60:CF:5D:38:A3:4C:10:67:28:20:6F:A3
          信任這個認證? [否]:  y
          認證已添加至keystore中

          posted on 2008-11-03 15:42 張秀蘭 閱讀(1583) 評論(0)  編輯  收藏 所屬分類: 資料查找
           
          Copyright © 張秀蘭 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 伊宁县| 开远市| 东港市| 秭归县| 永安市| 分宜县| 吉隆县| 营山县| 盈江县| 安康市| 甘泉县| 财经| 景谷| 兴隆县| 家居| 息烽县| 黔江区| 马鞍山市| 安陆市| 景东| 荆州市| 麦盖提县| 柳州市| 体育| 安远县| 山丹县| 长葛市| 雷山县| 赞皇县| 友谊县| 泸水县| 库车县| 灵石县| 沈阳市| 宁德市| 柘城县| 平武县| 青州市| 五大连池市| 禹城市| 晋中市|