![AWS Classic ELB 上的 SSL 终止](https://linux22.com/image/735247/AWS%20Classic%20ELB%20%E4%B8%8A%E7%9A%84%20SSL%20%E7%BB%88%E6%AD%A2.png)
我怎么也想不通我到底做错了什么。我按照 AWS 文档在经典 ELB 上添加了 SSL(我尝试了 NLB,但仍然失败了)。
基本上,我们有一个在端口 80 上监听的网络服务器。我希望在 ELB 上终止 SSL。
我正确添加了 ELB,为其网络接口添加了安全组(甚至尝试了危险的允许所有入站出站)。我也为实例的安全组尝试了此操作。
当我导航到https://mytestserver.com/resource它会默认使用 http - 但对于登录页面,会显示 https。登录后,它会使用 http。
我在文档/在线中读到了混合的内容,即对于 SSL 终止,您需要有一个 443 elb 侦听器端口 --> 实例端口 80,并且还有另一个带有 80 ELB 侦听器端口的规则 ---> 实例端口 80。
如果我尝试删除 80 elb 侦听器端口 --> 实例端口 80 的规则,我可以登录 - 但页面挂起。
它正在加载一些闪存组件,所以我确实确保为此启用了端口。我甚至尝试了临时“允许”所有,如前所述,用于 LB 和实例的安全组。
这让我认为实例的 Web 服务器(这是一个外部客户 Web 服务器,它运行着我们团队使用的应用程序,使用 Jetty)不喜欢正在发生的某种标头注入。
当我删除 elb 上端口 80 的监听器时,我对我的计算机进行了 wireshark 连接,它显示它一直尝试通过端口 80 访问 elb....有什么想法吗!?
谢谢!
PS我应该提一下,即使没有 SSL,网站的 http 版本也能正常工作。
答案1
一旦你登录你的后端就会返回HTTP 重定向有了新的地点指定浏览器现在应该去哪里。
因为您在 ELB 上终止 SSL,所以后端应用程序可能会检测到流量通过 HTTP 进入端口 80,并构建重定向链接http://mytestserver.com/...
(请注意它是 HTTP,因为服务器认为请求通过 HTTP 到达,因为这是 ELB 与它通信的方式)。
您需要做的是将您的应用程序或服务器配置更改为总是返回以 开头的 URL https://
。如何执行此操作取决于您使用的 Web 应用程序和/或 Web 服务器。
有关一个可能的解决方案,请参见此处:AWS 重定向到 SSL ERR_TOO_MANY_REDIRECTS
希望有帮助:)