You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS API Gateway前置ALB时证书不匹配问题求助

问题解决:API Gateway集成ALB时SSL主机名不匹配错误

你遇到的错误核心是API Gateway请求ALB时默认用AWS原生ELB域名作为Host头,但ALB绑定的证书是*.example.co.uk,导致SSL握手时主机名验证失败。直接访问子域名正常是因为浏览器自动用子域名作为Host头,而API Gateway默认用Endpoint URL的域名当Host。

下面是具体的解决方法:

方案1:给API Gateway配置自定义域名(推荐)

  • 在API Gateway控制台创建自定义域名(比如api.example.co.uk),选择和ALB相同的AWS证书(*.example.co.uk)。
  • 将自定义域名映射到你的REST API的部署阶段。
  • 在Cloudflare添加CNAME记录,把api.example.co.uk指向API Gateway生成的域名(格式类似d-xxxxxx.execute-api.eu-west-2.amazonaws.com)。
  • 修改API Gateway的HTTP集成Endpoint URL为ALB对应的子域名(比如https://service1.example.co.uk),而非ALB的原生ELB域名。

这样API Gateway对外用自定义域名,内部请求ALB时用匹配证书的子域名,SSL验证即可通过。

方案2:在API Gateway集成请求中自定义Host头

如果不想配置API Gateway自定义域名,直接修改集成请求的Host头:

  1. 进入API Gateway控制台,找到你的REST API的对应资源和方法。
  2. 切换到集成请求标签,滚动到HTTP Headers部分。
  3. 点击添加头,输入Host作为名称,值填写你要访问的ALB子域名(比如service1.example.co.uk)。
  4. 保存配置并重新部署API Gateway。

可以用curl验证配置是否生效:

curl -H "Host: service1.example.co.uk" https://<ALB_address>.elb.eu-west-2.amazonaws.com

如果返回正常,说明自定义Host头的配置有效。

为什么加NLB没用?

你之前尝试的NLB没解决问题,是因为你仍然用了NLB的原生域名(比如xxxxxx.nlb.eu-west-2.amazonaws.com)作为API Gateway的Endpoint URL,Host头还是不匹配证书的*.example.co.uk。如果要通过NLB解决,需要给NLB绑定同样的证书,并用自定义域名访问NLB,再让API Gateway集成到这个自定义域名。

额外检查点

  • 确认AWS证书的**主体备用名称(SAN)**包含你使用的所有子域名,*.example.co.uk可以覆盖所有子域名,这部分一般没问题。
  • 确保ALB的安全组允许API Gateway的IP段访问(可在API Gateway控制台的资源策略或ALB安全组中配置)。
  • 确认Cloudflare的DNS解析中,子域名的CNAME确实指向ALB的域名,若开启了Cloudflare的“橙色云”,需确保SSL模式为“完全”或“严格”。

内容的提问来源于stack exchange,提问作者Domenico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:17:20