ステップ 2: プライベートキーと SSL/TLS 証明書を生成またはインポートする - AWS CloudHSM

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

ステップ 2: プライベートキーと SSL/TLS 証明書を生成またはインポートする

HTTPS を有効にするには、Tomcat ウェブサーバーアプリケーションにプライベートキーと、それに対応する SSL/TLS 証明書が必要です。でウェブサーバーの SSL/TLS オフロードを使用するには AWS CloudHSM、プライベートキーを AWS CloudHSM クラスターの HSM に保存する必要があります。

注記

プライベートキーとそれに対応する証明書を持っていない場合、HSM でプライベートキーを生成できます。このプライベートキーを使用して証明書署名リクエスト (CSR) を作成し、それを使用してSSL/TLS証明書を作成します。

HSM のプライベートキーへの参照と関連する証明書を含むローカル AWS CloudHSM KeyStore ファイルを作成します。ウェブサーバーは AWS CloudHSM KeyStore ファイルを使用して、SSL/TLS オフロード中に HSM のプライベートキーを識別します。

プライベートキーの生成

このセクションでは、JDK KeyTool から を使用してキーペアを生成する方法を示します。HSM 内でキーペアを生成したら、ファイルとしてエクスポートし KeyStore 、対応する証明書を生成できます。

ユースケースに応じて、RSA または EC キーペアを生成できます。以下の手順では、RSA キーペアを生成する方法を示します。

genkeypair コマンド KeyTool を使用して RSA キーペアを生成する
  1. 下の <VARIABLES> を特定のデータに置き換えたら、次のコマンドを使用して jsse_keystore.keystore という名前のキーストアファイルを生成します。このファイルには HSM 上のプライベートキーへの参照が含まれます。

    $ keytool -genkeypair -alias <UNIQUE ALIAS FOR KEYS> -keyalg <KEY ALGORITHM> -keysize <KEY SIZE> -sigalg <SIGN ALGORITHM> \ -keystore <PATH>/<JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
    • <PATH>: キーストアファイルを生成するパス。

    • <UNIQUE ALIAS FOR KEYS>: これは HSM 上でキーを一意に識別するために使用されます。このエイリアスは、キーの LABEL 属性として設定されます。

    • <KEY PASSWORD>: キーへの参照はローカルキーストアファイルに保存され、このパスワードによってローカル参照が保護されます。

    • <KEYSTORE PASSWORD>: これはローカルキーストアファイルのパスワードです。

    • <JSSE KEYSTORE NAME>: キーストアファイルの名前。

    • <CERT DOMAIN NAME>: X.500 識別名。

    • <KEY ALGORITHM>: キーペアを生成するためのキーアルゴリズム (RSA と EC など)。

    • <KEY SIZE>: キーペアを生成するためのキーサイズ (たとえば、2048、3072、4096)。

    • <SIGN ALGORITHM>: キーペアを生成するためのキーサイズ(たとえば、SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA)。

  2. コマンドが成功したことを確認するには、次のコマンドを入力し、RSA キーペアが正常に生成されたことを確認します。

    $ ls <PATH>/<JSSE KEYSTORE NAME>.keystore

自己署名証明書を生成します

キーストアファイルとともにプライベートキーを生成したら、このファイルを使用して証明書署名リクエスト (CSR) と証明書を生成できます。

本稼働環境では、通常、認証機関 (CA) を使用して CSR から証明書を作成します。CA は、テスト環境では必要ありません。CA を使用する場合は、CA に CSR ファイルを送信し、HTTPS 用のウェブサーバーで提供される署名付き SSL/TLS 証明書を使用してください。

CA を使用する代わりに、 を使用して自己署名証明書 KeyTool を作成できます。自己署名証明書はブラウザによって信頼されないため、本稼働環境では使用しないでください。これらは、テスト環境で使用することができます。

警告

自己署名証明書はテスト環境でのみ使用する必要があります。本稼働環境では、証明機関を使用して証明書を作成するなど、より安全な方法を使用してください。

トピック
    証明書を生成する
    1. 前のステップで生成したキーストアファイルのコピーを入手します。

    2. 次のコマンドを実行して、 を使用して証明書署名リクエスト (CSR) KeyTool を作成します。

      $ keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore <JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
      注記

      証明書署名リクエストの出力ファイルは certreq.csr です。

    証明書に署名する
    • 下の <VARIABLES> を特定のデータに置き換えた後、次のコマンドを実行して、HSM 上のプライベートキーを使用して CSR に署名します。これにより、自己署名証明書が作成されます。

      $ keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias <UNIQUE ALIAS FOR KEYS> -keypass <KEY_PASSWORD> -storepass <KEYSTORE_PASSWORD> -sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore
      注記

      certificate.crt は、エイリアスのプライベートキーを使用する署名付き証明書です。

    Keystore に証明書をインポートする
    • 下の <VARIABLES> を特定のデータに置き換えた後、次のコマンドを実行して、署名付き証明書を信頼できる証明書としてインポートします。このステップでは、エイリアスで識別されるキーストアエントリに証明書を保存します。

      $ keytool -import -alias <UNIQUE ALIAS FOR KEYS> -keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE_PASSWORD>
    証明書を PEM に変換する
    • 次のコマンドを実行して、署名付き証明書ファイル (.crt) を PEM に変換します。PEM ファイルは http クライアントからのリクエストの送信に使用されます。

      $ openssl x509 -inform der -in certificate.crt -out certificate.pem

    これらの手順を完了したら、「ステップ 3: ウェブサーバーの設定」に進みます。