The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(11)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          J2SDK在目錄%JAVA_HOME%/bin提供了密鑰庫管理工具Keytool,用于管理密鑰、證書和證書鏈。Keytool工具的命令在JavaSE6中已經改變,不過以前的命令仍然支持。Keytool也可以用來管理對稱加密算法中的密鑰。

          最簡單的命令是生成一個自簽名的證書,并把它放到指定的keystore文件中:

          keytool -genkey -alias tomcat -keyalg RSA -keystore c:/mykey

          如果c:/mykey文件不存在,keytool會生成這個文件。按照命令的提示,回答一系列問題,就生成了數字證書。注意,公共名稱(cn)應該是服務器的域名。這樣keystore中就存在一個別名為tomcat的實體,它包括公鑰、私鑰和證書。這個證書是自簽名的。 

          Keytool工具可以從keystore中導出證書,但是不能導出私鑰。對于配置apache這樣的服務器,就不太方便。這種情況下就完全用OpenSSL吧,上一篇文章《SSL-用OpenSSL生成證書文件》中已經做了介紹。不過keytool對于J2EE AppServer是很有用的,它們就是用keystore存儲證書鏈的。keystore的作用類似于windows存放證書的方式,不過跨平臺了,^_^下面用Keytool生成CSR(Certificate Signing Request),并用OpenSSL生成CA簽名的證書。

          1.    準備
          1)    在bin目錄下新建目錄 demoCA、demoCA/certs、demoCA/certs  、 demoCA/newcerts
          2)    在demoCA建立一個空文件 index.txt
          3)    在demoCA建立一個文本文件 serial, 沒有擴展名,內容是一個合法的16進制數字,例如 0000
          4)    配置環境變量PATH,加入%JAVA_HOME%/bin,本文用的JavaSDK1.6

          2.    生成CA的自簽名證書
          openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

          3.    生成server端證書
          1)    生成KeyPair生成密鑰對
           keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456  -storepass 123456 -keystore server_keystore
            輸入common name時,要和服務器的域名保持一致。
          2)    生成證書簽名請求
          keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore 
          3)    用CA私鑰進行簽名,也可以到權威機構申請CA簽名。
             openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
            其中-notext表示不要把證書文件的明文內容輸出到文件中去,否則在后面用keytool導入到keystore時會出錯。
          4)    導入信任的CA根證書到keystore
             keytool -import -v -trustcacerts  -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore
          5)    把CA簽名后的server端證書導入keystore
          keytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore
          6)    查看server端證書
             keytool -list -v -keystore server_keystore  
           可以看到tomcat_server的證書鏈長度是2
           
          4.    生成client端證書
          1)    生成客戶端CSR
             openssl genrsa -des3 -out tomcat_client.key 1024
          openssl req -new -key tomcat_client.key -out tomcat_client.csr -config openssl.cnf
          2)    用CA私鑰進行簽名,也可以到權威機構申請CA簽名
          openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
          3)    生成PKCS12格式證書
          openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out  tomcat_client.p12
          4)    使用Keytool列出pkcs12證書的內容:
             keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12
          posted on 2014-07-22 14:42 Eric_jiang 閱讀(340) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 新化县| 镇坪县| 都江堰市| 郓城县| 大姚县| 尚志市| 醴陵市| 麟游县| 英超| 清苑县| 南靖县| 浙江省| 莲花县| 张北县| 承德市| 北川| 阜城县| 财经| 海口市| 随州市| 奉新县| 根河市| 甘洛县| 高密市| 称多县| 平度市| 宜良县| 义乌市| 苍溪县| 图木舒克市| 中卫市| 和顺县| 信丰县| 西畴县| 读书| 安国市| 岢岚县| 凌海市| 扎赉特旗| 繁昌县| 逊克县|