

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

# AWS CloudHSM クライアント SDK 3 の JCE プロバイダーをインストールする
<a name="java-library-install"></a>

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

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

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

------
#### [ Amazon Linux ]

```
$ sudo start cloudhsm-client
```

------
#### [ Amazon Linux 2 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ CentOS 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ CentOS 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 16.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 18.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 20.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------

以下のセクションを使用して、 プロバイダーに認証情報をインストール、検証、提供します。

**Topics**
+ [ステップ 1: JCE プロバイダーをインストールする](#install-java-library)
+ [ステップ 2: インストールを確認する](#validate-install)
+ [ステップ 3: JCE プロバイダーに認証情報を提供する](#java-library-credentials)

## ステップ 1: JCE プロバイダーをインストールする
<a name="install-java-library"></a>

以下のコマンドを使用して、JCE プロバイダーをダウンロードし,インストールします。このプロバイダーは、Linux および互換性のあるオペレーティングシステムでのみサポートされています｡ 

**注記**  
アップグレードについては、「[クライアント SDK 3 をアップグレードする](client-upgrade.md)」を参照してください。

------
#### [ 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`

## ステップ 2: インストールを確認する
<a name="validate-install"></a>

インストールを検証するには、HSM で基本的なオペレーションを実行します。

**JCE プロバイダーのインストールを検証するには**

1. (オプション) 使用環境に Java がインストール済みでない場合は、次のコマンドを使用してインストールします。

------
#### [ Linux (and compatible libraries) ]

   ```
   $ sudo yum install java-1.8.0-openjdk
   ```

------
#### [ Ubuntu ]

   ```
   $ sudo apt-get install openjdk-8-jre
   ```

------

1. 次のコマンドを使用して、必要な環境変数を設定します。*<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>
   ```

1. 基本的な機能のテストを実行するには、次のコマンドを使用します。成功すると、コマンドの出力は次のようになります。

   ```
   $ 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)
   ```

## ステップ 3: JCE プロバイダーに認証情報を提供する
<a name="java-library-credentials"></a>

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

**Explicit login** - この方法では、CloudHSM 認証情報をアプリケーションに直接渡すことができます。また、`LoginManager.login()` メソッドを使用します。ここで、CU ユーザー名、パスワード、HSM パーティション ID を渡します。明示的なログイン方法の使用の詳細については、「[HSM へのログイン](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/master/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java)」のサンプルコードを参照してください。

**Implicit login** - この方法では、CloudHSM 認証情報を、新しいプロパティファイルまたはシステムプロパティで設定するか、環境変数として設定することができます。
+ **New property file** －`HsmCredentials.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`

1. システムプロパティ

1. 環境変数

**エラー処理**  
暗黙的なログインよりも明示的なログインの方が、簡単にエラーを処理することができます。`LoginManager` クラスを使用すると、アプリケーションが障害に対応する方法をより細かく制御できます。暗黙的なログイン方法では、認証情報が無効な場合や、HSM でのセッションの認証に問題が発生したタイミングをエラー処理で把握するのが難しくなります。