スキップしてコンテンツを表示

API Gateway が生成した SSL 証明書でのエラーをトラブルシューティングする方法を教えてください。

所要時間2分
0

バックエンドシステムにインストールした、Amazon API Gateway が生成した自己署名および期限切れの SSL 証明書の問題を解決したいです。

解決策

HTTP プロキシ統合をテストする

API Gateway コンソールを使用して不正な SSL 証明書をテストします。不正な SSL 証明書のリストについては、Bad SSL のウェブサイトで badssl.com を参照してください。

次の手順を実行します。

  1. /selfsigned という名前のリソースを作成します。
  2. リソースに対する GET メソッドを作成します。
  3. URL を使用して HTTP プロキシ統合を設定します
  4. API Gateway コンソールを開きます。
  5. API をテストします。
  6. /expiredcert というリソースおよび、/untrustedRootCA という別のリソースで上記の手順を繰り返します。

/selfsigned というリソースに対し、次のエラーメッセージが表示されます。

「Thu Dec 15 16:05:05 UTC 2022 : https://self-signed.badssl.com/ にリクエストを送信中
12月15日 (木) 16:05:05 UTC 2022: 設定エラーにより実行に失敗しました。 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (PKIX パスの構築に失敗しました。sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりませんでした)」

/expiredcert というリソースに対し、次のエラーメッセージが表示されます。

「Thu Dec 15 16:06:02 UTC 2022 : https://expired.badssl.com/ にリクエストを送信中
12月15日 (木) 16:06:02 UTC 2022: 設定エラーにより実行に失敗しました。 PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed (PKIX パスの検証に失敗しました。java.security.cert.certPathValidatorException: 有効性チェックに失敗しました)"

/UntrustedRootCA というリソースに対し、次のエラーメッセージが表示されます。

「Thu Dec 15 16:06:28 UTC 2022 : https://untrusted-root.badssl.com/ にリクエストを送信中
12月15日 (木) 16:06:28 UTC 2022: 設定エラーにより実行に失敗しました。 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (PKIX パスの構築に失敗しました。sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりませんでした)」

設定エラーを解決する

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

Network Load Balancer に TLS リスナーがある場合、Network Load Balancer は TLS の破棄を実行し、ターゲットへの接続を新たに作成します。Network Load Balancer にアタッチされる証明書は、すべての要件を満たしている必要があります。

Network Load Balancer は、ターゲットとの SSL ハンドシェイク中に証明書の検証を実行しない。Network Load Balancer は、ターゲットインスタンスにインストールされている期限切れの証明書または自己署名証明書を受け入れる。Network Load Balancer とターゲットグループは、仮想プライベートクラウド (VPC) 内でリンクされている。Network Load Balancer が TCP リスナーを使用する場合、TLS ハンドシェイクはエンドツーエンドで行われる。この場合、バックエンドアプリケーションは SSL の要件を満たしている必要があります。

API Gateway は、VPC リンク統合による SSL ハンドシェイク中のサーバー名表示 (SNI) をサポートします。

バックエンドの Network Load Balancer に認証機関 (CA) による発行ではない、自己署名証明書またはプライベート証明書がある場合、次のエラーメッセージが表示されます。

「Execution failed due to configuration error: (構成エラーにより実行に失敗しました) PKIX パスの構築に失敗しました:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりませんでした)」

この問題を解決するには、次の AWS CLI コマンド update-integration を実行し、統合の tlsConfig オブジェクトで insecureSkipVerificationtrue に設定します。

aws apigateway update-integration --rest-api-id EXAMPLE-REST-API-ID --resource-id EXAMPLE-RESOURCE-ID --http-method GET --patch-operations "op='replace',path='/tlsConfig/insecureSkipVerification',value=true"

注: EXAMPLE-REST-API-ID および EXAMPLE-RESOURCE-ID を実際の値で置き換えます。

関連情報

API Gateway でバックエンド認証用の SSL 証明書を生成して設定する

AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ