安裝並使用用戶端 SDK 3 的 AWS CloudHSM JCE 提供者 - AWS CloudHSM

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安裝並使用用戶端 SDK 3 的 AWS CloudHSM JCE 提供者

在您可以使用 JCE 提供者之前,您需要用 AWS CloudHSM 戶端。

用戶端是與叢集中的 HSM 建立 end-to-end 加密通訊的精靈。JCE 提供者會在本機與用戶端進行通訊。如果您尚未安裝並設定用 AWS CloudHSM 戶端套件,請立即依照下列步驟執行安裝用戶端 (Linux)。安裝和設定用戶端之後,請使用以下命令來啟動用戶端。

僅 Linux 和相容的作業系統才支援 JCE 提供者。

Amazon Linux
$ sudo start cloudhsm-client
Amazon Linux 2
$ sudo systemctl cloudhsm-client start
CentOS 7
$ sudo systemctl cloudhsm-client start
CentOS 8
$ sudo systemctl cloudhsm-client start
RHEL 7
$ sudo systemctl cloudhsm-client start
RHEL 8
$ sudo systemctl cloudhsm-client start
Ubuntu 16.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 18.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 20.04 LTS
$ sudo systemctl cloudhsm-client start

安裝 JCE 提供者

使用下列命令下載和安裝 JCE 提供者。僅 Linux 和相容的作業系統支援此提供者。

注意

如需升級,請參閱 升級用戶端 SDK 3

Amazon Linux
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-jce-latest.el6.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el6.x86_64.rpm
Amazon Linux 2
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
RHEL 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
RHEL 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
Ubuntu 16.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-client-jce_latest_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_amd64.deb
Ubuntu 18.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-client-jce_latest_u18.04_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_u18.04_amd64.deb

當您執行上述命令後,您可以找到以下 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 提供者安裝
  1. (選用) 如果您的環境中尚未安裝 Java,請使用下列命令來安裝。

    Linux (and compatible libraries)
    $ sudo yum install java-1.8.0-openjdk
    Ubuntu
    $ sudo apt-get install openjdk-8-jre
  2. 使用下列命令來設定必要的環境變數。以加密使用者 (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>
  3. 請使用以下命令執行基本功能測試。如果成功執行,您會看到類似如下的命令輸出。

    $ 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 軟體程式庫會按照以下順序,搜尋登入資料:

  1. HsmCredentials.properties

  2. 系統屬性

  3. 環境變數

錯誤處理

使用明確登入會比隱含登入方法更容易處理錯誤。當您使用 LoginManager 類別時,您比較能控制應用程式如何處理失敗情況。隱含登入方法會讓處理錯誤時難以判斷到底是登入資料無效,或是 HSM 在驗證工作階段時發生問題。

JCE 提供者中的金鑰管理基礎知識

JCE 提供者的金鑰管理基本概念包括匯入金鑰、匯出金鑰、透過控制代碼載入金鑰或刪除金鑰。如需管理金鑰的詳細資訊,請參閱管理金鑰的程式碼範例。

您也可以在 程式碼範例 中尋找更多 JCE 提供者程式碼範例。