使用自訂網域名稱叫用 API Gateway API 時,如何解決憑證過期或「無效證書」錯誤?

上次更新日期:2022 年 9 月 23 日

如何為我的 API Gateway API 設定自訂網域名稱。我收到 AWS Certificate Manager (ACM) 憑證已過期或「憑證無效」的錯誤訊息。如何解決此錯誤?

簡短描述

當用於建立自訂網域名稱的憑證過期時,就會發生憑證已過期的錯誤。

發生「無效的憑證錯誤」是因為憑證中的一般名稱 (CN) 或主體名稱不相符。

解決方案

過期的 ACM 憑證

如果您的憑證已過期,您可能會收到錯誤訊息,如下所示:

"SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]"
若要檢查憑證是否到期,請執行 OpenSSL 命令 s_client,如下所示:

openssl s_client -servername <custom domain name> -connect <custom domain name>:443 2>/dev/null | openssl x509 -noout -dates

若要續約憑證,請參閱 ACM 憑證的受管續約

若要避免憑證過期,請參閱如何在 ACM 中監控已匯入的憑證是否過期

不相符的 ACM 憑證

如果您的憑證有不相符的 CN 或主體名稱,您可能會收到錯誤訊息,如下所示:

"ERR_CERT_COMMON_NAME_INVALID"

確認以下設定:

  • 用來建立自訂網域名稱的憑證存在於 ACM 中。
  • 憑證主體名稱或 CN 包含自訂網域名稱。例如,如果自訂網域名稱是 custom.example.com,則主體名稱或 CN 必須包含 custom.example.com 或 *example.com。
  • 請確定有指向 API Gateway 自訂網域名稱的 DNS 記錄。DNS 記錄可以是 CNAME 或 A 類型。

備註:自訂網域名稱無法直接指向 execute-api 端點,因為憑證沒有列為主體替代名稱 (SAN) 的自訂網域。

組態範例:

custom.example.com -> CNAME record -> d-yg54udirl4.execute-api.us-east-1.amazonaws.com

您可以在自訂網域上執行 dig 命令來檢查組態,如下所示:

$ dig custom.example.com