我有一个在 EC2 实例 (ubuntu-bionic-18.04-amd64) 中运行的 Springboot 应用程序。该程序运行时在默认端口 8080 上返回 JSON 响应。
该网址类似于 http://ec2-3-17-69-122.us-east-2.compute.amazonaws.com:8080/users/rayyanshaji/todos/
。
我需要完成的是 https 而不是 http,以便我的前端 UI 接受传入的 https 流量。
到目前为止我已经尝试过: 从 AWS Route 53 获取我自己的域名,使用 ACM(Amazon 证书管理器)获取证书,并使用它在弹性负载均衡器中创建入站 HTTPS 443 监听器。 添加了允许端口 80 和端口 443 上的入站流量的安全组。
我知道上述步骤不起作用,因为这是我运行 netstat -tulpn
命令时得到的结果
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 127.0.0.53:53 0.0.0.0:* -
udp 0 0 172.31.39.227:68 0.0.0.0:* -
我的服务器似乎未配置为接受 https 请求或发出 https 响应。
我现在被困在这里了,因为我不是使用linux的专家。我刚刚开始学习 EC2 实例上的部署。我搜索了很多解决方案,但很少找到关于 Java 的任何内容。
我确实需要解决这个障碍,以便我可以恢复项目的开发。任何建议将不胜感激。 提前致谢。
最佳答案
您走在正确的道路上,并且很高兴您能够使用 HTTPs 监听器和 ACM 证书配置负载均衡器。
首先,我必须告诉您,您的实际 ec2 实例不需要使用 HTTPS,因为这将由负载均衡器处理。负载均衡器将充当所有传入连接的 SSL 终结器。因此,所有 SSL 握手都将在客户端和负载均衡器之间进行。在负载均衡器的下游,它只能通过 http 端口与您的 ec2 实例通信,这意味着无论请求来自负载均衡器上的 HTTP/HTTPs 端口,它都只能通过 HTTP 端口转发到您的 EC2 实例。
因此,只需将负载均衡器目标组配置为在不同的 HTTP/HTTPs 端口上接收输入请求并转发到单个 HTTP 端口上的 EC2 实例即可。
关于java - ec2实例中的服务器返回https流量的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776729/