【问题标题】:Use AWS issued certificate for a Spring Boot app为 Spring Boot 应用程序使用 AWS 颁发的证书
【发布时间】:2021-02-03 08:09:12
【问题描述】:

我有一个在 AWS 上运行的应用程序,它有一个通过 S3 托管的 React JS 前端和一个托管在 负载均衡器后面的 EC2 实例上的 Spring Boot 后端。我获得了我的域的 SSL 证书,我使用 CloudFront 将 HTTP 请求重定向到 HTTPS。

我的问题是我可以通过 HTTPS 连接到负载均衡器,但是我的 Spring Boot API 不接受来自负载均衡器的 HTTPS。因此,我使用 HTTP 并且每当我向后端发送 API 调用时,我的网站都会更改为“Not Secured”。

有没有办法在我的 Spring Boot API 中使用亚马逊颁发的证书来接受 HTTPS 调用?我只找到了使用 自签名证书 的教程,并且想知道是否可以使用我的 AWS 证书。

如果有办法,您能否提供一个我需要在我的application.properties 文件中插入的代码示例?

干杯
克里斯

【问题讨论】:

  • 您是否尝试通过在 Java 应用程序和负载均衡器之间添加 SSL 来提供端到端加密?还是您只是想让 Spring Boot 停止将用户的浏览器重定向到 HTTP URL?
  • 嗯,老实说,我只是希望浏览器在每次从主页(不调用 API)切换到返回 API 调用的产品页面时停止从“安全”变为“不安全”-结尾。这个应用程序纯粹是为了我的娱乐,永远不会真正保存任何敏感数据。就目前而言,当我的前端调用 API 时,https:// 位会变红并在浏览器上被划掉。

标签: java amazon-web-services spring-boot ssl-certificate


【解决方案1】:

您的这部分问题确实令人困惑,因为您没有提供有关您的意思的详细信息:

我的问题是我可以通过 HTTPS 连接到我的负载均衡器, 但是,我的 spring-boot API 不接受来自负载均衡器的 HTTPS。

您的负载均衡器应该提供 AWS ACM SSL 证书。您应该对您的应用程序进行编码,以便您的网站对您的 API 进行 SSL 调用。负载均衡器应该通过 HTTP 与 Spring Boot 后端服务器通信,方法是在负载均衡器目标组设置中设置 HTTP 协议和端口。

交通流应该是这样的:

Web Browser -> (HTTPS) API call to Load Balancer -> (HTTP) call to backend Spring Boot server

【讨论】:

  • 谢谢马克,现在就是这样设置的。但我相信负载均衡器通过 HTTP 与 Spring Boot 通信的部分使我的网站不安全。所以我认为那个调用也应该通过 HTTPS。会不会是负载均衡器和 Spring Boot 服务器之间的 HTTP 调用导致站点显示不安全?
  • 您的网络浏览器不知道负载均衡器后面发生了什么。这不是让您的网站显示“不安全”警告的原因。
  • 干杯马克,这正是我需要听到的。将调查是什么让我的网站不安全。再次感谢朋友的解释!
  • @Kris 您应该能够在浏览器的开发者控制台中的网络选项卡中查看通过非 SSL 连接发生的请求,以使您的浏览器显示该警告。
  • 您应该有一个指向负载均衡器的 DNS 记录设置,它与 SSL 证书中的域名相匹配。您应该将 https 添加到该 URL。默认情况下,仅将域名粘贴到 Web 浏览器中并不安全,尤其是当您的负载均衡器同时提供 HTTP 和 HTTPS 服务时,听起来就像这样。
猜你喜欢
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 2020-11-26
  • 2020-02-13
  • 1970-01-01
相关资源
最近更新 更多