当我为 Amazon API Gateway 设置双向 TLS (mTLS) 身份验证时,我收到了 "Certificate subject conflicts with an existing certificate" 错误消息。我想解决这个问题。
简短描述
如果在 API Gateway 中为自定义域配置了 mTLS,那么同一域主题可能会有来自不同证书颁发机构 (CA) 的证书。您会收到以下错误消息:
"The certificate subject conflicts with an existing certificate from a different issuer."
AWS Certificate Manager (ACM) 证书、从其他 CA 外部导入的证书以及同一组织中不同 AWS 账户的证书可能会出现此错误。
要解决此问题,请确保从单个 CA 来源获取与同一域主题关联的所有证书。
解决方法
验证证书详细信息
API Gateway 不允许同一 AWS 区域内的多个颁发者为同一域名主体颁发证书。要检查自定义域的证书信息,请运行以下 OpenSSL 命令:
openssl s_client -connect YOUR_CUSTOM_DOMAIN:443 -servername SANS/CN_IN_CERTIFICATE | openssl x509 -noout -text
**注意:**请将 YOUR_CUSTOM_DOMAIN 替换为您的域名,并将 SANS/CN_IN_CERTIFICATE 替换为证书中的主题备用名称 (SAN) 或公用名 (CN)。
最佳做法是在同一 API Gateway 区域的所有 mTLS 自定义域中使用 SAN 中的 ACM 证书。
检查证书与域是否存在冲突
如果您使用通配符证书,请使用来自同一颁发者的不同通配符证书来分隔子域。通配符证书(如 *.example.com)可能会导致所有权验证问题。最佳做法是不使用通配符证书。
如果您的组织中有多个 AWS 账户,请检查是否存在冲突的 mTLS 域。确保 mTLS 域不在同一区域的不同账户中使用来自不同颁发者的通配符证书。
检查证书是否已删除或过期
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
如果您在配置中删除了证书或存在过期证书,则可能会收到 "Certificate subject conflicts" 错误。
检查您是否已删除或吊销了与其他证书冲突的证书。要检查证书信息,请运行以下 describe-certificate AWS CLI 命令:
aws acm describe-certificate --certificate-arn arn:aws:acm:Region:accountID:certificate/certificateID
**注意:请将 Region 替换为地区,将 ** accountID 替换为您的账户 ID,并将 certificateID 替换为证书的 Amazon 资源名称 (ARN) 中的详细信息。
确认指定的证书可用且处于活动状态。
验证您的证书到期日期。如果您的证书已过期,请强制续订证书。
相关信息
如何针对 API Gateway 中的 REST API 启用双向 TLS 身份验证
什么是 AWS Certificate Manager?