java中Keytool生成證書

       任何機構或者個人都可以申請數字證書,並使用數字證書對網絡通信保駕護航。要獲得數字證書,首先需要使用數字證書管理工具,如keytool、OpenSSL等,然後構建CSR(Certificate Siging Request,數字證書籤發申請),提交給數字證書認證機構進行簽名,最終形成數字證書。

Keytool 是一個Java 數據證書的管理工具 ,Keytool 將密鑰(key)和證書(certificates)存在一個稱爲keystore的文件中。

在keystore裏,包含兩種數據:

(1)密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密) 
(2)可信任的證書實體(trusted certificate entries)——只包含公鑰

JDK中Keytool常見的命令:

-genkey      在用戶主目錄中創建一個默認文件".keystore",還會產生一個mykey的別名,mykey中包含用戶的公鑰、私鑰和證書(在沒有指定生成位置的情況下,keystore會存在用戶系統默認目錄)
-alias       產生別名,每個keystore都關聯這一個獨一無二的alias,這個alias通常不區分大小寫
-keystore    指定密鑰庫的名稱(產生的各類信息將不在.keystore文件中)
-keyalg      指定密鑰的算法 (如 RSA  DSA(如果不指定默認採用DSA))
-validity    指定創建的證書有效期多少天
-keysize     指定密鑰長度
-storepass   指定密鑰庫的密碼(獲取keystore信息所需的密碼)
-keypass     指定別名條目的密碼(私鑰的密碼)
-dname       指定證書擁有者信息 
-list        顯示密鑰庫中的證書信息     
-v           顯示密鑰庫中的證書詳細信息
-export      將別名指定的證書導出到文件 
-file        參數指定導出到文件的文件名
-delete      刪除密鑰庫中某條目 
-printcert   查看導出的證書信息  
-keypasswd   修改密鑰庫中指定條目口令   
-import      將已簽名數字證書導入密鑰庫 

在JDK 1.4以後的版本中都包含了這一工具,它的位置爲%JAVA_HOME%\bin\keytool.exe,如下圖:

(1)構建自簽名證書

       在構建CSR之前,需要先在祕鑰庫中生成本地數字證書。生成本地數字證書需要提供用戶的身份、加密算法、有效期等一些數字證書的基本信息。

keytool -genkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA -va
lidity 365 -alias bo -keystore bo.keystore

(2)證書導出

     執行完上述命令之後,我們已經在本地生成了一個數字證書,雖然沒有經過證書認證機構進行認證,但是並不影響我們使用,我們可以使用相應的命令導出。

C:\Users\bo>keytool -exportcert -alias bo -file bo.cer -keystore bo.keystore -rfc

(3)導出CSR

       如果想得到證書認證機構的認證,需要導出數字證書並簽發申請(CSR),經過認證機構認證並簽發後,再將認證後的證書導入到本地祕鑰庫和信任庫。

keytool -certreq -alias bo -keystore bo.keystore -file bo.csr -v

導出CSR後,便可以到VerSign、GeoTrust等權威證書認證機構進行證書認證,但是通過這些認證機構認證的證書往往價格不菲。可以通過一些證書認證機構申請免費的證書,如Cacert。

(4)導入證書

      獲得證書認證機構頒發的數字證書後,需要將其導入信任庫。

keytool -importcert -trustcacerts -alias bo -file bo.cer -keystore bo.keystore

(5)查看keystore中證書

      通過上面一系列操作導入證書後,便可以通過相關命令,列出keystore中的證書。

keytool -list -alias bo -keystore bo.keystore

keytool沒辦法簽發其它證書,只能只簽名生成證書。因此用戶如果需要簽發證書,需要使用OpenSSL等來進行證書的簽發和證書鏈的管理。

參考:

https://blog.csdn.net/yinhuaiya/article/details/81774314

https://www.cnblogs.com/xdp-gacl/p/3750965.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章