限制从 API Gateway(客户端证书)访问 Elastic Beanstalk
Posted
技术标签:
【中文标题】限制从 API Gateway(客户端证书)访问 Elastic Beanstalk【英文标题】:Restrict access to Elastic Beanstalk from API Gateway (Client Side Cert.) 【发布时间】:2017-06-07 03:34:14 【问题描述】:如何限制对 Elastic Beanstalk 的访问使其只能处理来自 API Gateway 的请求?
从 API Gateway 的角度来看,这很简单:
-
生成简单的客户端证书(通过 API Gateway 仪表板),
后端验证每个请求的证书。
(A) 但是我应该如何验证这个客户端证书。在我的 Elastic Beanstalk (EB) 上使用 nginx 进行多 docker 配置?
我了解到弹性负载均衡器 (ELB)(EB 的组件)无法验证它。我必须使用 NGINX 在 ELB 后面的 EC2 上作为 Docker 容器运行来验证它。
(B) EB的Elastic Load Balancer应该设置什么(端口配置:HTTP(S)/TCP)?我是否购买了我的 Elastic Beanstalk 可以使用 443 端口的经过验证的 SSL 证书?
(C) 我应该在我的 EC2 实例上设置什么? (除了 NGINX - 我相信我知道如何设置 nginx.conf)
(D) 在 ELB 中使用 TCP 代替 HTTP 是否有一些缺点?
我已经阅读了一些关于这个问题的文章和其他 SO 帖子,但目前我对这个主题感到困惑。任何澄清都会非常有帮助!
【问题讨论】:
【参考方案1】:您是正确的,因为您需要验证服务器主机上的证书。具体配置将根据您的设置而有所不同,但应该非常简单 - 我建议您查阅 NGINX 文档。
为了验证主机上的证书,您需要将 ELB 配置为使用 TCP 负载平衡。请参阅ELB docs 了解 HTTP 和 TCP 负载平衡之间的区别。
【讨论】:
感谢您的回答!你知道如何在 ELB 和 NGINX 上配置端口吗? ELB 应该监听端口 80 (TCP) 并将其转发到端口 80? NGINX 应该监听 80 端口吗?我对吗?还是应该是无处不在的 443 端口,还是 80 和 443 的某种混合? @nicq 你是否掌握了在 ELB 和 Nginx 上设置监听的端口?以上是关于限制从 API Gateway(客户端证书)访问 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书
AWS APi Gateway 客户端证书,带有适用于 Elastic Beanstalk ELB 的 AWS 证书管理器
如何配置后端服务器以使用由 aws gateway api 生成的客户端 SSL 证书?
如何通过 Cognito 用户 ID 限制访问 AWS API Gateway 端点