API Gateway によって生成された SSL 証明書のエラーをトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

バックエンドシステムにインストールされている自己署名 SSL 証明書と期限切れ SSL 証明書に問題があります。これらのエラーを修正するにはどうすればよいですか?

簡単な説明

Amazon API Gateway がバックエンドと SSL ハンドシェイクを実行するとき、API Gateway では、信頼できる発行者から取得した証明書がバックエンドにより提供されていることを前提とします。API Gateway では、証明書が有効で、有効期限が切れていないことを前提とします。API Gateway では、信頼の連鎖が損なわれていないことも前提としています。つまり、API Gateway では、証明書にルート認証機関 (CA)、中間 CA、および親証明書の詳細が含まれていることを前提としています。この情報をもとに、API Gateway では、証明書の連鎖を経て、証明書の検証を完了させることができます。

解決方法

HTTP プロキシ統合テスト

HTTP プロキシ統合に慣れるために、API Gateway コンソールから不正な SSL 証明書をテストします。不正な SSL 証明書の詳細とテストについては、Bad SSL ウェブサイトを参照してください。

1.    GET メソッドを使用して「/selfsigned」という名前のリソースを作成します。次に、https://self-signed.badssl.com/ の URL を使用して HTTP プロキシ統合を設定します。

API Gateway コンソールから、API をテストします。次のエラーが表示されます。

Thu Dec 15 16:05:05 UTC 2022 : Sending request to https://self-signed.badssl.com/
Thu Dec 15 16:05:05 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

2.    GET メソッドを使用して「/expiredcert」という名前のリソースを作成します。次に、https://expired.badssl.com/ の URL を使用して HTTP プロキシ統合を設定します。

API Gateway コンソールから、API をテストします。次のエラーが表示されます。

Thu Dec 15 16:06:02 UTC 2022 : Sending request to https://expired.badssl.com/
Thu Dec 15 16:06:02 UTC 2022 : Execution failed due to configuration error: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed

3.    GET メソッドを使用して、「/untrustedRootCA」という名前のリソースを作成します。https://untrusted-root.badssl.com/ の URL を使用して HTTP プロキシ統合を設定します。

API Gateway コンソールから、API をテストします。次のエラーが表示されます。

Thu Dec 15 16:06:28 UTC 2022 : Sending request to https://untrusted-root.badssl.com/
Thu Dec 15 16:06:28 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

VPC リンク統合

VPC リンクの統合により、API Gateway は TLS ターミネーションを行うネクストホップで証明書検証を行います。

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 ハンドシェイク中の Server Name Indication (SNI) をサポートします。

バックエンドの Network Load Balancer に、CA が発行していない自己署名証明書またはプライベート証明書がある場合、次のエラーが表示されます。

Execution failed due to configuration error: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

実行失敗エラーの回避策は、統合の tlsConfig オブジェクトで [insecureSkipVerification][true] に設定することです。

注: EXAMPLE-REST-API-IDEXAMPLE-RESOURCE-ID を実際の値に置き換えてください。

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"

関連情報

バックエンド認証用の SSL 証明書の生成と設定

API Gateway がサポートする HTTP および HTTP プロキシ統合用の認証機関

Network Load Balancers のターゲットグループ

コメントはありません

関連するコンテンツ