1、生成祕鑰庫並創建一個條目
祕鑰需要存儲在祕鑰庫中,祕鑰庫可以理解爲一個存儲了一個或多個祕鑰的文件。一個祕鑰庫可以存儲多個密鑰對,每個祕鑰對你都需要給他們取一個名字。
因爲不存儲任何條目的祕鑰庫是沒有意義的,所以我們在生成祕鑰庫的時候需要指定一個條目,如果不指定,默認是的條目名稱是mykey
我們在D:\keystore目錄下生成一個文件名爲cjTomcat.keystore的祕鑰庫,因爲這個文件是第一次生成,必須同時生成一個條目,我決定將該祕鑰庫存儲的第一個祕鑰對的條目取名爲testcj。命令是:
keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias testcj -keyalg RSA -validity 365
如圖:
命令敲完回車之後,需要我們依次輸入一串信息,分別是祕鑰庫的密碼、名字和姓氏等,
如圖:
上圖中紅框中的都是手動敲入的內容。名字和姓氏這裏一般是填寫一個域名,我這裏填寫的是 localhost,我的祕鑰庫口令使用的是hellocj
在上圖中敲入y回車之後
如圖:
如果你想讓名爲testcj的這個條目的祕鑰口令和祕鑰庫的口令一樣,直接回車即可,我這裏讓此條目的祕鑰口令爲testcj,所以我輸入testcj
如圖:
好了我們的祕鑰庫創建好了,祕鑰庫中也添加了一個名爲testcj的條目,祕鑰庫的密碼是hellocj,testcj這個條目對應的祕鑰口令是testcj
說明:如果覺得一步一步的輸入很不科學的話,可以使用下面的命令完成上述全部操作:
keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias testcj -keyalg RSA -validity 365 -dname "CN=localhost, OU=org, O=org.cj, L=昆明, ST=雲南, C=中國" -keypass testcj -storepass hellocj
如圖:
2、往已經存在的祕鑰庫中添加條目
在第1章節講的是創建一個祕鑰庫文件,並添加一個初始化條目,那麼如果祕鑰庫文件已經存在,我們想往裏面添加條目怎麼辦。例如我想往裏面添加名爲cjTomcat的條目,給該條目設置的口令是helloworld 那麼我的命令是:
keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias "cjTomcat" -keyalg "RSA" -validity 365 -dname "CN=127.0.0.1,OU=org, O=org.cj, L=昆明, ST=雲南, C=中國" -keypass "helloworld" -storepass "hellocj"
如圖:
3、查看祕鑰庫中的信息
好了我現在有一個祕鑰庫了,我知道該祕鑰庫的口令,我想看看該祕鑰庫裏存了啥,命令是:
keytool -list -v -keystore D:\keystore\hellocj.keystore -storepass "hellocj"
如圖:
回車後,可以看到cmd屏幕輸出瞭如下信息:
4、導出某個條目的數字證書文件
好了,祕鑰庫也有了,條目也有了,我想將條目名爲cjTomcat的相關信息以及公鑰導出到一個數字證書文件中,數字證書文件名稱我取名爲cjTomcat.cer,命令如下:
keytool -alias "cjTomcat" -exportcert -keystore D:\keystore\hellocj.keystore -file D:\keystore\cjTomcat.cer -storepass "hellocj"
導出成功
如圖:
可以雙擊打開cjTomcat.cer文件,看看
如圖:
5、將數字證書導入到自己的JRE證書庫中
數字證書中存儲的一般是某個服務器的域名和公鑰,服務器證書需要導入到客戶端的JRE中,我將剛纔生成的cjTomcat.cer這個證書視爲服務器相關的信息。現在我要將條目名爲cjTomcat的數字證書導入到我本地的JRE受信任的證書庫中,導入命令是:
keytool -import -alias "cjTomcat" -keystore C:\Java\jdk1.8.0_40\jre\lib\security\cacerts -file D:\keystore\cjTomcat.cer -trustcacerts -storepass changeit
說明:changeit是cacerts這個證書庫的默認口令,因爲我們需要操作cacerts這個證書庫文件,所以需要輸入該證書庫的密碼,C:\Java\jdk1.8.0_40\jre需要替換爲你自己的JRE目錄
回車之後,會詢問是否信任cjTomcat.cer中存儲的證書
如圖:
輸入y回車
如圖:
6、從JRE的證書庫中刪除某個數字證書
條目名爲cjTomcat的這個數字證書我不想再信任他,我要從我本地的JRE證書庫中刪除他,命令是:
keytool -delete -alias "cjTomcat" -keystore "C:\Java\jdk1.8.0_40\jre\lib\security\cacerts" -storepass changeit
說明:changeit是cacerts這個證書庫的默認口令,因爲我們需要操作cacerts這個證書庫文件,所以需要輸入該證書庫的密碼,C:\Java\jdk1.8.0_40\jre需要替換爲你自己的JRE目錄
如圖:
7、其他說明
上面命令中的參數不一一解釋,很多都很直觀,簡單說明一下-alias指定條目名稱,-keyalg "RSA"指定加密算法用RSA,-keystor指定祕鑰庫文件,如果目錄有空格,那麼請使用雙引號。-validity 365指定有效期是365天。祕鑰庫的後綴名可以用任意名稱,或者乾脆不要後綴名也是可以的。