本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CloudHSM KeyStore 用戶端 3 的 Java SDK 類別
AWS CloudHSM KeyStore
類別提供特殊用途PKCS12金鑰存放區,允許透過 AWS CloudHSM 金鑰工具和 jarsigner 等應用程式存取金鑰。此金鑰存放區可與您的金鑰資料一起儲存憑證,並將其與在 AWS CloudHSM儲存的金鑰資料連結在一起。
注意
由於憑證是公開資訊,並且為了最大限度地提高密碼編譯金鑰的儲存容量, AWS CloudHSM 不支援在 上儲存憑證HSMs。
類別會實作 Java AWS CloudHSM KeyStore
密碼編譯延伸 (SPI) 的 KeyStore
Service Provider Interface (JCE)。如需使用 的詳細資訊KeyStore
,請參閱類別 KeyStore
為 AWS CloudHSM 用戶端 SDK 3 選擇適當的金鑰存放區
AWS CloudHSM Java 密碼編譯延伸模組 (JCE) 供應商隨附預設的傳遞唯讀金鑰存放區,可將所有交易傳遞至 HSM。此預設金鑰存放區與特殊用途 不同 AWS CloudHSM KeyStore。在大多數情況下,您會使用預設值取得較佳的執行階段效能和輸送量。除了將金鑰操作卸載至 之外,您只應 AWS CloudHSM KeyStore 針對需要憑證和憑證型操作支援的應用程式使用 HSM。
雖然這兩個金鑰存放區都使用JCE提供者進行操作,但它們都是獨立的實體,不會互相交換資訊。
請依照下方步驟說明為您的 Java 應用程式載入預設的金鑰存放區:
KeyStore ks = KeyStore.getInstance("Cavium");
載入特殊用途雲端HSM KeyStore ,如下所示:
KeyStore ks = KeyStore.getInstance("CloudHSM")
初始化用戶端 3 SDK AWS CloudHSM KeyStore 的
以您登入JCE提供者的 AWS CloudHSM KeyStore 相同方式登入。您可以使用環境變數或系統屬性檔案,而且您應該在開始使用 Cloud 之前登入HSM KeyStore。如需HSM使用 JCE 提供者登入 的範例,請參閱登入 HSM
如果需要,您可以指定密碼來加密存放金鑰存放區資料的本機PKCS12檔案。建立 AWS CloudHSM Keystore 時,您會設定密碼,並在使用載入、設定和取得方法時提供密碼。
如下所示,初始化新的 Cloud HSM KeyStore 物件:
ks.load(null, null);
使用 store
方法將金鑰存放區資料寫入檔案。從那時起,您可以依照以下方式,搭配來源檔案和密碼使用 load
方法載入現有的金鑰存放區:
ks.load(inputStream, password);
使用 AWS CloudHSM KeyStore 適用於 AWS CloudHSM 用戶端 3 SDK 的
雲端HSM KeyStore 物件通常透過第三方應用程式使用,例如 jarsigner
AWS CloudHSM KeyStore 符合 JCE Class KeyStore
-
load
從特定的輸入串流載入金鑰存放區。如果在儲存金鑰存放區時設定了密碼,則必須提供相同的密碼才能成功載入。將這兩個參數設為 Null 以初始化一個新的空金鑰存放區。
KeyStore ks = KeyStore.getInstance("CloudHSM"); ks.load(inputStream, password);
-
aliases
傳回特定的金鑰存放區執行個體中的所有項目別名名稱列舉。結果包括儲存在本機PKCS12檔案中的物件,以及駐留在 上的物件HSM。
範本程式碼:
KeyStore ks = KeyStore.getInstance("CloudHSM"); for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) { String label = entry.nextElement(); System.out.println(label); }
-
ContainsAlias
如果金鑰存放區可存取至少一個有指定別名的物件,則傳回 True。金鑰存放區會檢查儲存在本機PKCS12檔案中的物件,以及駐留在 上的物件HSM。
-
DeleteEntry
從本機PKCS12檔案刪除憑證項目。HSM 不支援使用 刪除存放在 中的金鑰資料 AWS CloudHSM KeyStore。您可以使用 Cloud HSM的 key_mgmt_util 工具刪除金鑰。
-
GetCertificate
如果可用,則傳回與別名相關聯的憑證。如果別名不存在或參考的物件不是憑證,則函數會傳回 NULL。
KeyStore ks = KeyStore.getInstance("CloudHSM"); Certificate cert = ks.getCertificate(alias)
-
GetCertificateAlias
傳回第一個資料符合特定憑證的金鑰存放區項目名稱 (別名)。
KeyStore ks = KeyStore.getInstance("CloudHSM"); String alias = ks.getCertificateAlias(cert)
-
GetCertificateChain
傳回與特定別名相關聯的憑證鏈。如果別名不存在或參考的物件不是憑證,則函數會傳回 NULL。
-
GetCreationDate
傳回由給定別名辨識的項目建立日期。如果沒有建立日期,則函數會傳回憑證生效的日期。
-
GetKey
GetKey 會傳遞至 ,HSM並傳回對應至指定標籤的金鑰物件。
getKey
直接查詢 時HSM,它可用於 上的任何金鑰,HSM無論其是否由 產生 KeyStore。Key key = ks.getKey(keyLabel, null);
-
IsCertificateEntry
檢查有特定別名的項目是否代表憑證項目。
-
IsKeyEntry
檢查有特定別名的項目是否代表金鑰項目。動作會同時搜尋 PKCS12 檔案和 HSM的別名。
-
SetCertificateEntry
指定特定憑證至特定別名。如果特定的別名已用於識別金鑰或憑證,則會擲出
KeyStoreException
。您可以使用JCE程式碼取得金鑰物件,然後使用 KeyStoreSetKeyEntry
方法將憑證與金鑰建立關聯。 -
有
byte[]
金鑰的SetKeyEntry
用戶端 API 3 SDK 目前不支援此項目。
-
有
Key
物件的SetKeyEntry
將指定的金鑰指派給指定的別名,並將其存放在 中HSM。如果
Key
物件不是 類型CaviumKey
,則金鑰會以可擷取工作階段金鑰HSM的形式匯入 。如果
Key
物件屬於類型PrivateKey
,則必須附有相對應的憑證鏈。如果別名已經存在,則
SetKeyEntry
呼叫會擲出KeyStoreException
並防止覆寫金鑰。如果必須覆寫金鑰,請使用 KMU或 JCE 作為該用途。 -
EngineSize
傳回金鑰存放區中的項目數目。
-
Store
將金鑰存放區儲存到指定的輸出串流作為PKCS12檔案,並使用指定的密碼來保護它。此外,它仍然保留載入的金鑰 (使用
setKey
呼叫的組合)。