如何使用 Gunicorn EC2 服务器在 Amazon Elastic Load Balancer 上使用 SSL?

如何使用 Gunicorn EC2 服务器在 Amazon Elastic Load Balancer 上使用 SSL?

我是一名自学成才的后端工程师,所以我在学习过程中一直在学习这些东西。长期以来,我一直为我的用户使用基本身份验证。

许多开发人员不建议采用这种方法,因为每个请求都将以明文形式包含用户名和密码。任何具备适当技能的人都可以嗅探我的 iOS 应用程序和我的 Django/Gunicorn 服务器之间的连接并获取他们的密码。

我不想让我的用户凭证面临风险,所以我想实施一种更安全的身份验证方式。

SSL 似乎是最可行的选择。我的服务器不提供任何静态内容或任何此类疯狂内容。服务器所做的只是从我的 iOS 应用程序发送和接收“json”响应。这是我当前的拓扑。

iOS 应用程序 ------> Amazon Elastic Load Balancer -------> 运行 HTTP Gunicorn 的 EC2 实例。

Gunicorn 在端口 8000 上运行。我有一个来自 GoDaddy 的用于 Amazon Elastic Load Balancer DNS 的 CNAME 记录。

因此,我没有使用长 DNS 来发出请求,而是直接使用 server.example.com。

为了与我的服务器交互,我向 server.example.com:8000/ 发送和接收请求

此设置有效且稳定。但是我需要一种更安全的方法。我想在我的 iOS 应用程序和 Elastic Load Balancer 之间设置 SSL。我该怎么做?

由于我仅向我的应用程序发送 json 响应,我是否真的需要从 CA 购买证书或者我可以创建自己的证书?(因为浏览器不会与我的服务器交互。我的服务器仅设计用于向我的 iOS 应用程序发送 json 响应)。

答案1

您的 ELB 可以侦听您指定的任何端口,并定位服务器中的任何端口。为了向后兼容,我建议使用另一个端口(例如 8001)作为您的安全端口,并通过新版本应用程序中的安全连接进行通信。您向负载均衡器添加一个侦听器,上传 server.example.com 的证书(通过 Web 界面),瞧,您现在可以在用户和 ELB 之间使用安全连接。您甚至可以使用相同的端口从 ELB 查询后端服务器。

作为开发人员,我还建议进一步提高安全性,例如,使用基于会话的身份验证,而不是在每次请求时重新发送用户名和密码。

相关内容