用keytool建立祕鑰庫以及匯入匯出數字證書等操作
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天。祕鑰庫的字尾名可以用任意名稱,或者乾脆不要字尾名也是可以的。
轉載自 https://blog.csdn.net/pucao_cug/article/details/70136159?utm_source=copy