我为我的 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 解析或证书不匹配错误?