1. 程式人生 > >《實戰開發》使用JDK的keytool生成p12證書

《實戰開發》使用JDK的keytool生成p12證書

由於前段時間在研究itext技術中的簽章技術中遇到了數字簽名的問題,需要用到p12證書,因此就撰寫一篇用我們jdk自帶的keytool 工具生成p12證書的方法供各位交流。

  • keytool 簡介
    keytool 是java 用於管理金鑰和證書的工具.
    其功能包括
    • 建立並管理金鑰
    • 建立並管理證書
    • 作為CA 為證書授權
    • 匯入匯出證書

主要格式
keytool 採用 keystore 檔案來儲存金鑰及證書,其中可包括私鑰、信任證書;
keystore 檔案主要使用 JKS格式(也可支援其他格式),帶金鑰儲存;其中私鑰的儲存也有獨立的密碼;

其他格式

下面我們就通過jdk自帶的keytool來生成一個p12證書

  • 首先我們開啟dos命令視窗,然後將路徑切換到你安裝jdk的bin目錄檔案下,如下圖所示:
    這裡寫圖片描述
  • 接下來,我們就可以在該目錄下面使用命令來生成一個p12證書了。步驟如下:

1. 生成私鑰和證書

   1)我們首先執行如下命令:

keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 3650 -keystore tomatocc.keystore

引數說明

  • storepass keystore 檔案儲存密碼
  • keypass 私鑰加解密密碼
  • alias 實體別名(包括證書私鑰)
  • dname 證書個人資訊
  • keyalt 採用公鑰演算法,預設是DSA
  • keysize 金鑰長度(DSA演算法對應的預設演算法是sha1withDSA,不支援2048長度,此時需指定RSA)
  • validity 有效期
  • keystore 指定keystore檔案

    2)執行完上述指令後,會提示我們輸入一些資訊,我們按照提示輸入即可,具體資訊如下圖:
    這裡寫圖片描述

  • 我們注意一下最後一行: 輸入的金鑰口令,這裡因為我們在上面設定了一個金鑰庫的口令,因此這裡的口令如果和上面設定的口令一樣的話,就直接回車就好,如果兩個口令不一樣,那麼我們可以直接輸入,然後回車就好。

    3)然後我們開啟jdk的bin目錄,就可以看到我們生成的私鑰。
    這裡寫圖片描述

2. 檢視keystore詳情

   1)我們執行如下命令,然後輸入金鑰庫口令再回車,就可以看到我們的keystore詳情

keytool -v -list -keystore tomatocc.keystore

這裡寫圖片描述

3. 證書匯入匯出

      1)我們將我們生成的金鑰資訊匯出為.cer格式的證書。我們執行下面命令,輸入金鑰庫口令即可。

keytool -exportcert -keystore tomatocc.keystore -file tomatocc.cer -alias serverkey

這裡寫圖片描述

  • 然後我們就可以在bin檔案下看到我們剛才匯出的tomatocc.cer證書檔案了。

這裡寫圖片描述

2)將證書匯入到金鑰庫,一般為匯入信任證書(SSL客戶端使用,我們這裡用不到,可以忽略),我們可以執行如下指令,然後輸入金鑰庫口名再回車即可。

keytool -importcert -keystore client_trust.keystore -file tomatocc.cer -alias client_trust_server -noprompt

這裡寫圖片描述
然後我們就可以在bin檔案下看到我們剛才匯出的client_trust.keystore金鑰檔案了。
這裡寫圖片描述

4. 將.cer格式的證書轉換為p12證書

1)現在,我們將我們生成的.cer格式的證書轉為換.p12格式的證書。我們執行下面命令,輸入目標金鑰庫口令和源金鑰庫口令即可。(目標金鑰庫口令指的是,我們要為.p12證書設定的口令,而源金鑰庫口令則指的是我們最初為.cer證書設定的金鑰庫口令)

keytool -importkeystore -srckeystore tomatocc.keystore -destkeystore tomatocc.p12 -srcalias serverkey -destalias serverkey -srcstoretype jks -deststoretype pkcs12 -noprompt

這裡寫圖片描述
然後我們就可以在bin檔案下看到我們剛才匯出的tomatocc.p12證書檔案了。
這裡寫圖片描述

到這裡為止。我們就完成了一個.p12證書生成的全部流程。