天天看點

jks 簽名指令_JKS:擴充自簽名證書

jks 簽名指令

有時您沒有PKI,但仍需要密鑰和相應的證書來簽名(在TLS上下文之外)。 在最初生成的jks檔案中的證書過期後,您幾乎沒有選擇–生成全新的密鑰對,或以某種方式“擴充”現有證書。 這對大多數測試和内部系統很有用,但仍然值得一提。

擴充證書通常是不可能的–一旦過期,就完成了。 但是,您可以擁有具有相同私鑰和更長期限的新證書。 這聽起來像應該容易做的事情,但是事實證明,使用keytool并不是那麼容易。 即使使用我最喜歡的工具keystore Explorer ,也無法立即實作。

為了重用私鑰以擁有更長的新證書,您需要執行以下操作:

  1. 導出私鑰( 使用keytool和openssl或通過keystore-explorer UI進行,這要簡單得多)
  2. 發出證書簽名請求( 使用keytool或通過keystore-explorer UI)
  3. 使用私鑰(即自簽名)對請求進行簽名
  4. 将證書導入商店中以替換舊的(過期的)證書

對于keytool或keystore exporer,最後兩個步驟似乎并不簡單。 如果您嘗試使用現有的密鑰庫密鑰對對請求進行簽名,則将目前證書用作鍊的根(并且您不希望這樣做)。 而且您無法删除證書并生成新證書。

是以,您需要使用OpenSSL:

x509 -req -days 3650 - in req.csr -signkey private.key -sha256 -extfile extfile.cnf -out result.crt 
           

extfile.cnf是可選的,如果要指定擴充名,則使用extfile.cnf。 例如,為時間戳記,擴充檔案如下所示:

extendedKeyUsage=critical,timeStamping 
           

之後,“簡單地”建立一個新的密鑰庫,并導入私鑰和新生成的證書。 通過keystore-explorer UI可以直接實作,而通過指令行則不那麼容易 。

您已經注意到我更喜歡keytool-explorer。 與像keytool和openssl這樣的指令行工具相比,它是使鍵和密鑰庫的使用變得容易且可預測的好工具,我敢肯定,沒有人會使用Google的每條指令。 當然,如果您必須執行非常具體或奇怪的事情,則必須恢複到指令行,但是對于大多數操作而言,UI足以滿足要求(除非您必須使其自動化,在這種情況下,顯然,請使用CLI) 。

您幾乎不需要做我上面顯示的操作,但是如果需要,我希望上面的提示有用。

翻譯自: https://www.javacodegeeks.com/2019/05/jks-extending-self-signed-certificate.html

jks 簽名指令