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