本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安裝並使用用戶端 SDK 3 的 AWS CloudHSM JCE 提供者
在您可以使用 JCE 提供者之前,您需要用 AWS CloudHSM 戶端。
用戶端是與叢集中的 HSM 建立 end-to-end 加密通訊的精靈。JCE 提供者會在本機與用戶端進行通訊。如果您尚未安裝並設定用 AWS CloudHSM 戶端套件,請立即依照下列步驟執行安裝用戶端 (Linux)。安裝和設定用戶端之後,請使用以下命令來啟動用戶端。
僅 Linux 和相容的作業系統才支援 JCE 提供者。
安裝 JCE 提供者
使用下列命令下載和安裝 JCE 提供者。僅 Linux 和相容的作業系統支援此提供者。
注意
如需升級,請參閱 升級用戶端 SDK 3。
當您執行上述命令後,您可以找到以下 JCE 提供者檔案:
-
/opt/cloudhsm/java/cloudhsm-
version
.jar -
/opt/cloudhsm/java/cloudhsm-test-
version
.jar -
/opt/cloudhsm/java/hamcrest-all-1.3.jar
-
/opt/cloudhsm/java/junit.jar
-
/opt/cloudhsm/java/log4j-api-2.17.1.jar
-
/opt/cloudhsm/java/log4j-core-2.17.1.jar
-
/opt/cloudhsm/lib/libcaviumjca.so
驗證安裝
HSM 上執行基本操作以驗證安裝。
驗證 JCE 提供者安裝
-
(選用) 如果您的環境中尚未安裝 Java,請使用下列命令來安裝。
-
使用下列命令來設定必要的環境變數。以加密使用者 (CU) 的登入資料取代
<HSM user name>
和<password>
。$
export LD_LIBRARY_PATH=/opt/cloudhsm/lib
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
-
請使用以下命令執行基本功能測試。如果成功執行,您會看到類似如下的命令輸出。
$
java8 -classpath "/opt/cloudhsm/java/*" org.junit.runner.JUnitCore TestBasicFunctionality
JUnit version 4.11 .2018-08-20 17:53:48,514 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:33) - Adding provider. 2018-08-20 17:53:48,612 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:42) - Logging in. 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:104) - Looking for credentials in HsmCredentials.properties 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:122) - Looking for credentials in System.properties 2018-08-20 17:53:48,613 INFO [main] cfm2.LoginManager (LoginManager.java:130) - Looking for credentials in System.env SDK Version: 2.03 2018-08-20 17:53:48,655 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:54) - Generating AES Key with key size 256. 2018-08-20 17:53:48,698 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:63) - Encrypting with AES Key. 2018-08-20 17:53:48,705 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:84) - Deleting AES Key. 2018-08-20 17:53:48,707 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:92) - Logging out. Time: 0.205 OK (1 test)
提供憑證給 JCE 提供者
HSM 需要先驗證您的 Java 應用程式,應用程式才能使用這些 HSM。每個應用程式可以使用一個工作階段。HSM 會使用明確登入或隱含登入方法,驗證工作階段。
明確登入:此方法可讓您直接在應用程式中提供 CloudHSM 憑證。它使用 LoginManager.login()
方法;您可在其中傳遞 CU 使用者名稱、密碼和 HSM 分割區 ID。如需使用明確登入方法的詳細資訊,請參閱登入 HSM
隱含登入:此方法可讓您在新的屬性檔案、系統屬性或環境變數中設定 CloudHSM 憑證。
-
新的屬性檔案:建立名稱為
HsmCredentials.properties
的新檔案,並將其新增到您應用程式的CLASSPATH
。檔案應包含以下內容:HSM_PARTITION = PARTITION_1 HSM_USER =
<HSM user name>
HSM_PASSWORD =<password>
-
系統屬性:執行應用程式時,您可以透過系統屬性設定憑證。以下範例示範兩種不同的作法:
$
java -DHSM_PARTITION=PARTITION_1 -DHSM_USER=
<HSM user name>
-DHSM_PASSWORD=<password>
System.setProperty("HSM_PARTITION","PARTITION_1"); System.setProperty("HSM_USER","
<HSM user name>
"); System.setProperty("HSM_PASSWORD","<password>
"); -
環境變數:將憑證設定為環境變數。
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
如果應用程式未提供登入資料,或者,如果您在 HSM 驗證工作階段之前嘗試操作,就可能無法使用登入資料。在這些情況下,適用於 Java 的 CloudHSM 軟體程式庫會按照以下順序,搜尋登入資料:
-
HsmCredentials.properties
-
系統屬性
-
環境變數
錯誤處理
使用明確登入會比隱含登入方法更容易處理錯誤。當您使用 LoginManager
類別時,您比較能控制應用程式如何處理失敗情況。隱含登入方法會讓處理錯誤時難以判斷到底是登入資料無效,或是 HSM 在驗證工作階段時發生問題。
JCE 提供者中的金鑰管理基礎知識
JCE 提供者的金鑰管理基本概念包括匯入金鑰、匯出金鑰、透過控制代碼載入金鑰或刪除金鑰。如需管理金鑰的詳細資訊,請參閱管理金鑰
您也可以在 程式碼範例 中尋找更多 JCE 提供者程式碼範例。