使用自定义域名调用 API 网关 API 时,如何解决证书过期或 "invalid certificate"(证书无效)错误?

1 分钟阅读
0

我为我的 API 网关 API 自定义域名。我收到一条错误消息,提示 AWS Certificate Manager (ACM) 证书已过期或 "invalid certificate"(证书无效)。如何解决此错误?

简短描述

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

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

要续订证书,请参阅 Managed renewal for ACM certificates(ACM 证书的托管更新)。

要避免证书过期,请参阅 How to monitor expirations of imported certificates in ACM(如何在 ACM 中监控导入的证书过期)。

ACM 证书不匹配

如果您的证书的 CN 或主题名称不匹配,您可能会收到与以下内容类似的错误:

"ERR_CERT_COMMON_NAME_INVALID"

确认以下设置:

  • 用于创建自定义域名的证书存在于 ACM 中。
  • 证书使用者名称或 CN 包含自定义域名。例如,如果自定义域名是 custom.example.com,则主题名称或 CN 必须包含 custom.example.com 或 *example.com。
  • 确保有一条指向 API 网关自定义域名的 DNS 记录。DNS 记录可以是 CNAME 或 A 类型。

**注意:**自定义域名不能直接指向 execute-api 端点,因为证书没有将自定义域列为 Subject Alternative Name (SAN)。

示例配置:

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

您可以通过在自定义域上运行 dig 命令来检查您的配置,如下所示:

$ dig custom.example.com

相关信息

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

AWS 官方
AWS 官方已更新 2 年前