如何解决使用自定义域名调用 API Gateway API 时出现的证书已过期或“invalid certificate”(证书无效)错误?

1 分钟阅读
0

我为 API Gateway API 设置了自定义域名。我收到了错误,指示 AWS Certificate Manager (ACM) 证书已过期或“invalid certificate”(证书无效)。

简短描述

当用于创建自定义域名的证书过期时,会出现“证书已过期错误”。

出现“invalid certificate”(证书无效)错误的原因是证书中的公用名 (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

要续订证书,请参阅 AWS Certificate Manager 中的托管证书续订

为避免证书过期,请参阅 How to monitor expirations of imported certificates in 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

相关信息

如何解决我的 API Gateway 自定义域名的 DNS 解析或证书不匹配错误?

AWS 官方
AWS 官方已更新 2 个月前