Client SDK 3 の AWS CloudHSM JCE プロバイダーをインストールして使用する - AWS CloudHSM

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Client SDK 3 の AWS CloudHSM JCE プロバイダーをインストールして使用する

JCE プロバイダーを使用する前に、 AWS CloudHSM クライアントが必要です。

クライアントは、クラスター内の HSMs との end-to-end 暗号化された通信を確立するデーモンです。JCE プロバイダは、クライアントとローカルに通信します。 AWS CloudHSM クライアントパッケージをインストールして設定していない場合は、「」のステップに従って実行しますクライアント (Linux) のインストール。クライアントのインストールと設定が完了したら、次のコマンドを使用して起動します。

JCE プロバイダーは、Linux および互換性のあるオペレーティングシステム上でのみサポートされています。

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 および互換性のあるオペレーティングシステムでのみサポートされています。

注記

アップグレードについては、「Client 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. 次のコマンドを使用して、必要な環境変数を設定します。<HSM user name><password> では、crypto user (CU) の認証情報に置き換えます。

    $ 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 アプリケーションを認証する必要があります。アプリケーションごとに 1 つのセッションを使用できます。HSM は、明示的なログインと暗黙的なログイン方法のいずれかを使用して、セッションを認証します。

Explicit login - この方法では、CloudHSM 認証情報をアプリケーションに直接渡すことができます。また、LoginManager.login() メソッドを使用します。ここで、CU ユーザー名、パスワード、HSM パーティション ID を渡します。明示的なログイン方法の使用の詳細については、「HSM へのログイン」のサンプルコードを参照してください。

Implicit login - この方法では、CloudHSM 認証情報を、新しいプロパティファイルまたはシステムプロパティで設定するか、環境変数として設定することができます。

  • New property fileHsmCredentials.properties という名前の新しいファイルを作成し、そのファイルをアプリケーションの CLASSPATH に追加します。ファイルには次の内容が含まれます。

    HSM_PARTITION = PARTITION_1 HSM_USER = <HSM user name> HSM_PASSWORD = <password>
  • System properties - アプリケーションの実行時に、システムプロパティを通して認証情報を設定します。次の例は、これを行うための 2 つの異なる方法を示しています。

    $ 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>");
  • Environment variables - 認証情報を環境変数として設定します。

    $ 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 プロバイダーののサンプルコードについては、コードサンプル で参照できます。