1. 程式人生 > >用keytool建立祕鑰庫以及匯入匯出數字證書等操作

用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