API Gateway API の相互 TLS 認証を設定するときに、サードパーティが発行したクライアント証明書を使用するにはどうすればよいですか?

所要時間2分
0

Amazon API Gateway API の相互トランスポート層セキュリティ (TLS) 認証を設定するときに、サードパーティが発行したクライアント証明書を使用したいと考えています。

解決方法

TLS 認証で API Gateway にサードパーティの署名付きクライアント証明書を使用するには、次の手順に従います。

  1. サードパーティの署名付き証明書を使用するトラストストアを作成します。
  2. API Gateway API のカスタムドメイン名と API マッピングを作成します。
  3. DNS レコードを作成して、カスタムドメイン名を API Gateway にマッピングします。
  4. デフォルトエンドポイントを無効にします。
  5. API をテストします。

注:

  • AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLIを使用していることを確認してください
  • 相互 TLS はプライベート API ではサポートされていません。

サードパーティの署名付き証明書を使用するトラストストアを作成する

1.    ルート CA を生成します。ルート CA はクライアント証明書の発行に使用されます。

openssl genrsa -out RootCA.key 4096  

openssl req -new -x509 -days 3650 -key RootCA.key -out RootCA.pem
  1. 必須フィールドに入力し、ドメイン名を入力します。

  2. クライアント証明書のプライベートキー、証明書署名要求 (CSR)、およびクライアント証明書を作成します。

openssl genrsa -out my_client.key 2048  

openssl req -new -key my_client.key -out my_client.csr
  1. 以前に作成した CA を使用してクライアント証明書に署名します。
openssl x509 -req -in my_client.csr -CA RootCA.pem -CAkey RootCA.key -set_serial 01 -out my_client.pem -days 3650 -sha256
  1. truststore.pem ファイルを保存する Amazon Simple Storage Service (Amazon S3) バケットを作成します

  2. Amazon S3 バケットトラストストアに Rootca.pem をアップロードします

  3. (オプション) 中間 CA 証明書からルート CA までの証明書チェーンファイルを作成します。

Cat Intermediate.pem ca.pem >ca-chain.pem.

詳細については、「トラストストアの設定」を参照してください。

API Gateway API のカスタムドメイン名と API マッピングを作成する

**注:**API Gateway では、キーサイズが 2048 ビットの証明書のみが表示されます。証明書のサイズは 2048 ビットを超えることはできません。

  1. API Gateway コンソールを開き、**[カスタムドメイン名]**を選択します。

  2. [ドメイン名] で、ドメイン名を入力して **[作成]**を選択します。

  3. [ドメイン名] に、ドメイン名を入力します。

  4. [TLS の最小バージョン] で **[TLS 1.2]**を選択します。

  5. 相互 TLS 認証を有効にします。

  6. **[トラストストア URI] **には、以前に作成した Amazon S3 URI を入力します。

  7. [エンドポイント設定] では、**[リージョン]**を選択します。

  8. [証明書の種類] で証明書の種類を選択し、**[ドメイン名を作成]**を選択します。

  9. カスタムドメイン名を選択し、**[API マッピングを設定]**を選択します。

  10. **[新しいマッピングを追加]**を選択します。

  11. マッピングの [API][ステージ][パス]を選択し、[保存] を選択します。

詳細については、「API Gateway API のカスタムドメイン名を設定するにはどうすればよいですか?」を参照してください。

DNS レコードを作成してカスタムドメイン名を API Gateway にマッピングする

DNS レコードを作成し、カスタムドメイン名に API Gateway リージョンドメイン名を指定します。これにより、カスタムドメイン名にバインドされているトラフィックを API リージョンホスト名のホストにルーティングできます。DNS レコードは CNAME タイプまたは「A エイリアス」タイプです。

詳細については、「API Gateway エンドポイントにトラフィックをルーティングするように Route 53 を設定する」を参照してください。

デフォルトエンドポイントを無効にする

デフォルトでは、クライアントは API Gateway が API 用に生成する execute-api エンドポイントを使用して API を呼び出すことができます。デフォルトの execute-api エンドポイントを無効にして、クライアントがカスタムドメイン名のみを使用して API にアクセスできるようにします。

HTTP API については、「HTTP API のデフォルトエンドポイントの無効化」を参照してください。

REST API については、「REST API のデフォルトエンドポイントの無効化」を参照してください。

API をテストする

--key と**--cert** パラメータを使用して API をテストし、リクエストの一部としてクライアント証明書を送信します。

$ curl -v https://{YourCustomDomainName}/{resource} --key my_client.key --cert my_client.pem

注: リクエストを正常に実行するには、クライアント証明書 my\ _client.pem だけでなく、プライベートキー my\ _client.key もリクエストで送信する必要があります。

関連情報

カスタムドメインと相同 TLS が有効になっている Amazon API Gateway の証明書チェーンと自己署名証明書の問題のトラブルシューティングするにはどうすればよいですか?

Amazon API ゲートウェイの相互 TLS 認証の導入

相互 TLS を必要とする API Gateway カスタムドメイン名からの HTTP 403 禁止エラーをトラブルシューティングする方法を教えてください。

コメントはありません

関連するコンテンツ