跳至内容

如何解决 API Gateway 中与 mTLS 的证书主题冲突?

1 分钟阅读
0

当我为 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?

AWS 官方已更新 10 个月前