AWS API Gateway子域名更名后SSL握手失败问题求助
SSL握手失败(ERR_SSL_VERSION_OR_CIPHER_MISMATCH)排查思路
遇到重命名子域名后出现的ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误,结合你提供的OpenSSL测试结果(无对等证书返回、握手失败)和AWS API Gateway+ACM的环境,给你整理以下排查方向:
1. 优先确认新子域名的DNS解析正确性
重命名子域名后最常见的问题就是DNS未正确指向API Gateway:
- 用
dig或nslookup查询新子域名的解析记录:dig new-sub.mydomain.net nslookup new-sub.mydomain.net - 确认返回的IP/CNAME是否与API Gateway自定义域名对应的CloudFront分配一致。如果解析到了错误的服务器,自然会出现SSL握手失败(因为该服务器没有配置你的ACM证书)。
- 注意DNS缓存问题:可以尝试在终端用
curl --resolve new-sub.mydomain.net:443:<CloudFront_IP> https://new-sub.mydomain.net强制指定IP,验证是否能正常握手。
2. 检查API Gateway自定义域名配置
即使你有通配符证书,API Gateway也需要明确绑定对应的域名:
- 登录AWS控制台,进入API Gateway → 自定义域名,确认是否已经添加了新的子域名(或保持
*.mydomain.net的通配符域名配置)。 - 检查自定义域名的类型:如果是边缘优化类型,对应的ACM证书必须部署在
us-east-1区域;如果是区域类型,证书必须和API Gateway在同一区域。 - 确认自定义域名的基础路径映射是否正确关联到你的API部署阶段,避免因路径问题导致的间接错误。
3. 验证ACM证书的有效性与覆盖范围
虽然你使用的是通配符证书,但仍需确认:
- 证书状态是否为
Issued,未过期且未被吊销。 - 证书的SAN(Subject Alternative Name)是否包含
*.mydomain.net,且新子域名符合通配符规则(通配符仅匹配一级子域名,比如new-sub.mydomain.net符合,但new-sub.sub.mydomain.net需要*.*.mydomain.net的证书)。 - 证书是否已正确关联到API Gateway的自定义域名(或背后的CloudFront分配)。
4. 排查CloudFront配置细节
API Gateway自定义域名依赖CloudFront分发,这部分容易忽略:
- 进入CloudFront控制台,找到对应API Gateway的分发,确认:
- 分发状态为
Deployed(配置更新后通常需要5-15分钟全球生效)。 - SSL/TLS配置中,已选择你的ACM通配符证书,且协议版本设置为兼容现代浏览器的选项(推荐
TLSv1.2及以上,禁用SSLv3、TLSv1.0)。 - 分发的备用域名(CNAME)已添加新的子域名,确保与自定义域名配置一致。
- 分发状态为
5. 深入分析SSL握手失败原因
从你提供的OpenSSL结果来看,服务器仅返回7字节的握手错误,说明连接到的服务未正确处理SSL请求:
- 尝试指定TLS版本测试,排除协议不兼容:
openssl s_client -connect new-sub.mydomain.net:443 -servername new-sub.mydomain.net -tls1_2 - 用
curl获取更详细的调试信息:curl -v https://new-sub.mydomain.net - 检查新子域名的443端口是否正常开放:可以用
telnet new-sub.mydomain.net 443测试连通性,若端口不通,可能是安全组或防火墙限制。
6. 排除客户端缓存问题
Chrome的缓存可能保留了旧的SSL信息或DNS记录:
- 尝试用Chrome的隐私模式访问,避免缓存干扰。
- 手动清除Chrome的SSL缓存:设置 → 隐私和安全 → 清除浏览数据 → 勾选“缓存的图片和文件”以及“Cookie和其他网站数据”,然后重试。
7. 确认AWS资源部署状态
AWS配置更新可能存在延迟:
- 等待15-30分钟,让CloudFront的全球分发配置完全生效。
- 重新部署API Gateway的自定义域名配置,确保所有变更已同步到边缘节点。
内容的提问来源于stack exchange,提问作者user3720176
相关产品推荐
相关产品推荐

