我有一个在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 Certificate Manager)获得了证书,并使用它在Elastic Load Balancer中创建了入站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上找到任何东西。
我确实需要修复此障碍,以便我可以恢复项目的开发。任何建议,将不胜感激。 预先感谢。
答案 0 :(得分:1)
您走在正确的道路上,可以使用HTTPs侦听器和ACM证书配置负载均衡器。
首先,我必须告诉您,您的实际ec2实例无需使用HTTPS,因为这将由负载均衡器处理。负载平衡器将充当所有传入连接的SSL终结器。因此,所有SSL握手都将在客户端和负载平衡器之间进行。在负载均衡器的下游,它只能与您的ec2实例通过http端口进行通信,这意味着请求是否来自负载均衡器上的HTTP / HTTPs端口,它只能转发到HTTP端口上的EC2实例。
因此,只需将负载均衡器目标组配置为在不同的HTTP / HTTPs端口上接收输入请求,然后在单个HTTP端口上转发到您的EC2实例。