保护AWS API Gateway后面的现有API

时间:2016-09-26 10:45:35

标签: amazon-web-services ssl aws-api-gateway amazon-elb client-certificates

假设我有一个RESTful API,它位于ELB后面的Windows EC2集群上。现有的API是.NET应用程序,并在IIS中托管。

我想尝试将AWS API Gateway放在现有API之前,以便AWS处理安全性,可伸缩性等。基本上将AWS Gateway设置为现有API的HTTP代理。

从AWS文档中,它声明必须公开现有API。但是,应该通过检查客户端证书来验证呼叫是否来自Amazon API Gateway。

http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html

然而,现有API的SSL连接在ELB处终止。因此,当我们在请求中检查客户端证书时,在代码中 - 它不存在。

在EC2 / IIS /代码级别获取客户端证书需要做些什么?

或者是否有其他方法可以保护现有API并确保AWS API Gateway仍能与之通信?

2 个答案:

答案 0 :(得分:2)

您需要配置设置ELB以执行基于TCP的负载平衡并终止IIS / EC2主机上的SSL连接。这将需要将SSL证书分发给主机并配置它们以将证书绑定到适当的端口。

答案 1 :(得分:1)

通常人们更喜欢在其API网关上卸载SSL以节省管理开销,因为ELB终止有效地将管理移动到基础架构中的单个点,而不是要求在多个服务器上管理SSL证书。

如果您拥有由某个协调器[ECS,kubernetes,Docker Swarm]管理的EC2群集,它也会有所帮助。正如您已经提到的,负载均衡器的API网关由SSL证书保护,您可以在负载均衡器上添加访问策略以提供与EC2群集交互所需的权限,而您的EC2存在于私有VPC中,您可能不会需要将证书添加到您的EC2机器,因为所有通信都已得到保护。

希望它有意义。