【问题标题】:Verify API Gateway client certificate in ELB在 ELB 中验证 API Gateway 客户端证书
【发布时间】:2018-05-11 22:17:22
【问题描述】:

我想将 API 网关请求代理到 ECS 集群中的容器。由于 API 网关不能放在安全组中,我必须通过面向 Internet 的 ALB 负载均衡器公开服务。为了验证该服务是否只处理来自 API GW 的流量,我希望使用 client certificates

有没有办法让 ELB 为我验证 API 网关客户端证书并在将请求交给我的 HTTP 后端之前终止 SSL 连接?

如果 ELB 无法验证证书,在我看来,我必须将代理“降级”为 TCP 代理,并在我的服务中执行 SSL 握手。但是,为此,我还需要从服务中提供证书。这是一个问题,因为我使用的是 AWS 预置的 SSL 证书,并且我没有私钥。因此,我不仅要重新创建 SSL 握手,还要从其他地方获取我的 SSL 证书,这是正确的吗?

希望有一种省力的方法来建立 API Gateway 和 ALB 后面的 ECS 服务之间的信任。

【问题讨论】:

  • 对不起,缩写的使用令人困惑-我使用的是AWS::ElasticLoadBalancingV2::LoadBalancer,而不是旧的。这就是我所说的“ELB”,我想应该更合适的是“ALB”?
  • 你找到这个问题的解决方案了吗?

标签: aws-api-gateway amazon-elb client-certificates


【解决方案1】:

很遗憾,ELB 不支持为您验证客户端证书。您可以在您的服务上实现 SSL 终止并在 TCP 模式下使用 ELB(或使用较新的 NLB)。您不需要客户端证书的私钥,只需将公钥/证书添加到服务上您受信任的 CA,以便服务仅信任 API GW 客户端证书。

【讨论】:

  • Jack,您知道 AWS PrivateLink 是否可以在这里“建立”信任?另外,关于信任建立的另一个问题(尽管与证书无关) - 有没有办法将集成后端配置为托管在 EC2 上的 http,它被锁定在 VPC 内(没有公共 IP 地址)?
  • 我所说的私钥是用于 SSL 证书,而不是客户端证书。为了验证证书,我必须通过 NLB 传输流量,但是服务需要提供 SSL 证书,对吗?而且我无法使用我们当前用于终止 ALB 上的 SSL 的 AWS 预置项,因为我无法获得它的私钥。也许(希望)我误解了什么?
  • 啊。您可能已经看到,API GW 中现在提供了 VPC 链接,这将允许您在没有客户端身份验证 SSL 的情况下保护您的后端连接。
  • VPC 链接仍然是一个糟糕的解决方案,因为您最终会将后端暴露给整个 VPC。您仍然需要客户端证书身份验证或类似身份来强制流量来自 API 网关,而不是绕过身份验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 2018-02-15
  • 1970-01-01
  • 2019-02-19
  • 2018-09-17
  • 2017-10-07
  • 2012-02-23
相关资源
最近更新 更多