curl访问配置HTTPS监听的AWS ALB时提示证书主体名不匹配报错
问题根因
- 报错是标准的TLS证书域名校验失败:你发起HTTPS请求时访问的是ALB默认分配的域名
my-alb.us-east-1.elb.amazonaws.com,但ALB HTTPS监听器绑定的ACM证书仅绑定了自有域名dev.myapp.example.com,TLS握手阶段客户端会校验证书内置的主体备用名称(SAN)列表是否包含当前访问的主机名,二者完全不匹配,直接触发校验失败。 - ALB默认分配的
*.elb.amazonaws.com后缀域名所有权归AWS所有,你没有该域名的管理权限,无法为其申请合法的公有SSL证书,不存在“给ALB默认域名配证书”的可行方案。
修复步骤
- 登录你的DNS服务商GoDaddy控制台,为自有域名
dev.myapp.example.com添加CNAME解析记录,解析目标填写ALB的默认DNS名称my-alb.us-east-1.elb.amazonaws.com,等待解析全球生效(通常TTL设置为300秒的话5分钟内即可生效)。 - 所有客户端访问服务时,弃用ALB默认域名,统一使用自有域名
dev.myapp.example.com发起HTTPS请求。 - HTTPS链路验证通过后,不需要直接删除ALB的80端口HTTP监听器,可以直接在该监听器上配置规则,将所有HTTP请求永久重定向到443端口的HTTPS服务,兼顾用户访问习惯和安全要求。
验证方式
解析生效后执行如下请求测试:
curl --location --request POST 'https://dev.myapp.example.com/login' --header 'Content-Type: application/json' --data-raw '<JSON_HERE>'
正常情况下会和之前HTTP访问一致,返回携带JWT令牌的JSON响应,不会再出现SSL证书相关报错。
临时排查链路时可以给curl加
-k参数跳过证书校验,但该方式仅用于排障,禁止在生产环境或正式客户端配置中使用。
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

