如何在不使用公证书的情况下通过SSL连接AWS API Gateway与内部NLB/ALB
问题背景
我有一个公网AWS API Gateway REST API,需要将其连接至内部NLB/ALB,出于合规要求,所有通信必须采用SSL协议。
当前配置:API Gateway对入站连接使用SSL,随后通过VPC Link代理至非SSL私有AWS Network Load Balancer,该NLB再连接至Application Load Balancer。
注意:API Gateway REST API无法通过VPC Link直接连接至ALB,因此必须连接至指向ALB的NLB;而HTTP API允许直接连接。
请求流程:
GET https://<api-gateway-domain>/sample/api- API Gateway通过代理集成(VPC Link)连接至私有VPC子网中的NLB
- NLB路由至单个ALB
- ALB根据请求特征路由至对应的后端服务器
根据AWS API Gateway文档,仅允许使用受信任CA签发的SSL证书。我希望避免为私有资源获取公证书,已尝试为ALB配置内部CA签发的私有证书,但API Gateway因不识别该内部CA而无法连接至后端,求可行方案。
可行方案
方案1:使用AWS Certificate Manager(ACM)私有CA
- 在AWS中创建ACM私有CA,用它为内部ALB/NLB签发私有SSL证书
- 将ACM私有CA的根证书导入API Gateway的信任存储:通过API Gateway控制台或CLI,把私有CA的根证书添加到API Gateway的自定义信任列表中,让API Gateway信任该CA签发的内部证书
- 配置NLB/ALB使用ACM私有CA签发的证书,确保API Gateway到NLB/ALB的通信全程使用SSL
方案2:部署内部SSL终止代理
- 在VPC内部部署SSL终止代理(如Nginx、HAProxy),配置代理使用内部CA签发的证书,同时根据合规要求配置客户端验证规则
- API Gateway通过VPC Link以SSL方式连接到该代理,代理再将请求转发至ALB(可选择保持SSL或使用内部HTTP,需符合合规要求)
- 此方案无需修改API Gateway的全局信任配置,通过中间代理层适配内部证书信任问题
方案3:迁移至API Gateway HTTP API
- 利用HTTP API可通过VPC Link直接连接ALB的特性,将现有REST API迁移为HTTP API
- 为ALB配置内部CA签发的证书,在HTTP API的集成设置中启用自定义CA信任,上传内部CA的根证书至HTTP API的信任存储,让HTTP API信任ALB的私有证书
- 此方案简化架构,移除NLB中转环节,同时满足全SSL通信要求
方案4:采用AWS PrivateLink服务端点
- 如果后端是AWS托管服务(如ECS、EC2上的服务),配置AWS PrivateLink服务端点,让API Gateway通过PrivateLink直接连接后端服务,无需经过NLB/ALB
- 为PrivateLink端点配置内部CA签发的证书,将CA根证书导入API Gateway信任存储,实现端到端SSL通信
- 此方案适合后端服务可直接通过PrivateLink暴露的场景,减少中间负载均衡层级
内容的提问来源于stack exchange,提问作者Vince_DC
相关产品推荐
相关产品推荐

