cerulean

          關于證書

          Server

          創建本地證書:

          keytool -genkey -alias testserver-keyalg RSA -keystore keystore

          其中alias自己起一個別名,keystore為證書庫的文件路徑

          還可以加上-keysize 1024、2048、4096等來指定公鑰的大小,由此導出的證書查看時可以看到公鑰的大小是與之一致的。keysize越大genkey時耗費時間越長。


          會要求鍵入一個密碼,為這個證書庫的訪問密碼

          會要求填寫一些信息,姓名、單位、地區之類

          最后要求鍵入一個密碼,為這條證書別名的密碼

          導出cert

          keytool -export -alias testserver-file testcert.cer -keystore keystore

          這里的別名和文件名同上一步


          Client

          直接導入cert

          Truststore文件中存儲的是作為client,信任那些server的證書。所以需要將server提供的證書導入進來(當然可以導入n個),client才能信任。

          keytool -import -alias testserver-file testcert.cer -keystore truststore

          導入時需要輸入密碼,該密碼應該是truststore文件的訪問密碼,密碼正確才能修改其信息。

          提示是否信任該證書信息,確認。

          查看證書信息:

          keytool –list –v –keystore truststore

          如果導入過多個,則可以看到多條entry

          刪除某一個證書entry,通過指定別名來刪:

          keytool -delete -alias testserver-keystore truststore


          上述是自簽名的證書,證書鏈的長度只為
          1

          真正商用時,需要找相關機構(例如verisign)認證通過才能成為有效的證書:

          生成證書簽名請求:

          keytool -certreq -keyalg RSA -alias testserver -file certreq.csr -keystore keystore

          之后能夠收到一個證書文件,證書鏈信息包含了該機構的一些信息,然后再導入。


          有兩種方法建立
          HTTPS連接,

          一種是,在java中可以設置相關的4個系統參數,指向相關的keystore,truststore,一旦設置,在運行時就不可改變了。除非一定要使用多個不同的證書庫文件,否則可以把多個不同證書都導入到同一個證書庫里,這樣,設置系統參數為唯一的值也夠用,而且也比較簡單一些。

          另一種是,自己繼承相關接口實現自己的證書管理器,這樣可以自定義相關行為,也可以load不同的證書庫。


          如果不設置
          password,就認為不檢查文件完整性,也能通過。如果設置了password,但是不正確,則會遇到密碼錯誤的異常;如果server證書沒有導入到client得信任列表里,則會遇到找不到可信證書的異常。

          posted on 2009-07-16 17:27 cerulean 閱讀(578) 評論(0)  編輯  收藏 所屬分類: Java

          導航

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 叙永县| 资阳市| 平谷区| 博乐市| 云和县| 潞西市| 双柏县| 运城市| 太湖县| 江口县| 红安县| 沈丘县| 勃利县| 晴隆县| 汉源县| 留坝县| 车致| 吉木萨尔县| 龙陵县| 甘谷县| 会理县| 会东县| 屯昌县| 来凤县| 满城县| 万州区| 醴陵市| 肃北| 华容县| 乌海市| 临武县| 囊谦县| 来安县| 保靖县| 彰化市| 曲麻莱县| 二连浩特市| 铁岭县| 蒙城县| 德安县| 东平县|