Java製作證書的工具keytool用法總結
- 2019 年 10 月 8 日
- 筆記
一、keytool的概念
keytool 是個密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用於(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。在JDK 1.4以後的版本中都包含了這一工具,它的位置為%JAVA_HOME%binkeytool.exe,如下圖所示:

二、keytool的用法

三、創建證書
創建證書主要是使用" -genkeypair",該命令的可用參數如下:

Cmd代碼
keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"
功能:
創建一個別名為test1的證書,該證書存放在名為test.keystore的密鑰庫中,若test.keystore密鑰庫不存在則創建。
參數說明:
-genkeypair:生成一對非對稱密鑰;
-alias:指定密鑰對的別名,該別名是公開的; -keyalg:指定加密算法,本例中的採用通用的RAS加密算法;
-keystore:密鑰庫的路徑及名稱,不指定的話,默認在操作系統的用戶目錄下生成一個".keystore"的文件

注意:
1.密鑰庫的密碼至少必須6個字符,可以是純數字或者字母或者數字和字母的組合等等
2."名字與姓氏"應該是輸入域名,而不是我們的個人姓名,其他的可以不填
在上述圖片遇到keytool 錯誤: java.io.FileNotFoundException: test.keystore (拒絕訪問。)這是因為權限問題:你的jdk目錄在c盤,當前用戶無寫入權限。
所以要麼更改jdk的保存目錄,要麼更改權限。
我將jdk目錄保存到了D盤

行完上述命令後,在操作系統的用戶目錄下生成了一個"test.keystore"的文件,如下圖所示:

四、查看密鑰庫裏面的證書
範例:查看test.keystore這個密鑰庫裏面的所有證書
Cmd代碼
keytool -list -keystore test.keystore

五、導出到證書文件
範例:將名為test.keystore的證書庫中別名為test1的證書條目導出到證書文件test.crt中
Cmd代碼
keytool -export -alias test1 -file test.crt -keystore test.keystore

運行結果:在操作系統的用戶目錄下生成了一個"test.crt"的文件,如下圖所示:

六、導入證書
範例:將證書文件test.crt導入到名為test_cacerts的證書庫中
Cmd代碼:
keytool -import -keystore test_cacerts -file test.crt

七、查看證書信息
範例:查看證書文件test.crt的信息
Cmd代碼:
keytool -printcert -file "test.crt"

八、刪除密鑰庫中的條目
範例:刪除密鑰庫test.keystore中別名為test1的證書條目
Cmd代碼:
keytool -delete -keystore test.keystore -alias test1

九、修改證書條目的口令
範例:將密鑰庫test.keystore中別名為test2的證書條目的密碼修改為xdp123456
Cmd代碼:
keytool -keypasswd -alias test2 -keystore test.keystore
