ApiGateway自定义域名出现ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误排查
以下是针对该问题的具体排查步骤:
验证证书关联正确性
确认API Gateway自定义域名配置中选中的ACM通配符证书与ALB使用的完全一致,检查证书ARN是否匹配,同时确认证书状态为ISSUED,且通配符规则(如*.example.com)覆盖当前自定义域名。检查DNS解析配置
API Gateway自定义域名依赖CloudFront提供SSL终止,因此自定义域名的DNS记录必须是CNAME指向对应的CloudFront分发域名,而非直接指向API Gateway原生域名。用nslookup your-custom-domain或dig your-custom-domain验证解析结果,确保返回CloudFront节点IP。核对TLS版本与密码套件配置
API Gateway控制台的TLS版本设置会同步到关联的CloudFront分发,需确认:- 进入CloudFront控制台,找到对应分发,检查SSL/TLS证书是否正确关联目标ACM证书
- 确认分发的TLS版本设置为
TLSv1.2,同时密码套件包含主流浏览器支持的组合(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) - 配置变更需等待10-15分钟同步到全球CloudFront节点,避免立即测试导致误判
排查证书链完整性
导入ACM的通配符证书必须包含完整的证书链(根证书+中间证书),缺失链会导致客户端验证失败。用openssl s_client -connect your-custom-domain:443命令查看证书链信息,与ALB的证书链输出对比,确保两者一致。若链不完整,重新导入带完整链的证书并重新关联。确认CloudFront分发状态
检查CloudFront分发状态是否为Deployed,若处于In Progress状态,需等待配置全局传播完成后再测试。验证客户端TLS兼容性
确保测试用的浏览器/客户端支持TLS 1.2及对应密码套件,部分旧客户端可能不兼容API Gateway/CloudFront的默认套件。可通过openssl s_client -connect your-custom-domain:443 -tls1_2手动测试TLS 1.2握手,查看具体错误信息。
内容的提问来源于stack exchange,提问作者Diego Brignoli

