繁体   English   中英

使用自动 SSL 证书在 AWS Elastic Beanstalk 上部署 Spring Boot 应用程序

[英]Deploy Spring Boot application on AWS Elastic Beanstalk with automatic SSL certificates

假设我有一个 Spring 启动项目,该项目生成一个 JAR 文件www.example.com.jar ,它使用其嵌入式 HTTP 服务器显示一个示例页面,显示单词“Example”。

  • 我想在 AWS Elastic Beanstalk 上部署这个裸文件 JAR。
  • 我希望我的自定义域支持 SSL/TLS,即https://www.example.com/
  • 我想使用亚马逊自己的 Amazon Certificate Manager。
  • 我希望 Amazon Certificate Manager 根据需要自动续订证书。
  • 如有必要,我很乐意为 DNS 使用亚马逊的 Route 53。
  • 如有必要,我愿意使用负载均衡器。
  • 如有必要,我愿意使用亚马逊的 CloudFront。
  • 我不想要一个让我手动更新证书并不时将其复制到某个地方的解决方案。
  • 我不想要一个需要我创建 EC2 实例的解决方案; 我想部署一个裸机 JAR。

满足所有这些要求的选项是什么? (我看到的大多数教程都完全跳过了 SSL 部分,尽管 SSL 在今天的网络上是强制性的)。

最后,如果这对于裸 JAR 文件根本不可能,但对于裸 Docker 图像是可能的,我有兴趣使用裸 Docker 图像来满足这些相同的要求。

  • 我想在 AWS Elastic Beanstalk 上部署这个裸文件 JAR。

  • 我不想要一个需要我创建 EC2 实例的解决方案; 我想部署一个裸机 JAR。

这两个陈述对我来说没有意义。 您想要使用 Elastic Beanstalk,但又不想使用 EC2 实例? Elastic Beanstalk 只不过是一项为您管理 EC2 实例的服务。 当您使用 Elastic Beanstalk 部署您的应用程序时,它将创建一个或多个 EC2 实例并将您的应用程序部署在这些实例上。

要将 Spring Boot 应用程序部署到 Elastic Beanstalk,请遵循此官方指南

为了满足您的 SSL 要求,您需要在 AWS ACM 中为您拥有的域 ( www.example.com ) 创建一个 SSL 证书,并选择 DNS 验证。 然后创建它告诉您的 DNS 记录,以验证您对该域的所有权。

接下来,使用负载均衡器将您的 Java 应用程序部署到 Elastic Beanstalk。 然后将 AWS ACM 证书附加到负载均衡器。 最后,为www.example.com创建一条 DNS CNAME 记录,指向负载均衡器的 DNS 名称。 您不需要为此使用 Route53,除非您尝试将根域( example.com而不是www.example.com )指向您的负载均衡器。

除了可能自动更新/重新安装证书之外,可能已经偶然满足了所有这些要求:

  • 是的,裸 Spring 在 AWS Elastic Beanstalk 上启动 JAR 文件。
  • 是的,我的自定义域支持 SSL/TLS,即https://www.example.com/
  • 是的,确实使用了亚马逊自己的 Amazon Certificate Manager。
  • 我不知道,但我希望 Amazon Certificate Manager 会根据需要自动续订证书。
  • 是的,亚马逊的 Route 53 是我用于 DNS 的东西。
  • 是的,我崩溃了,开始愿意使用负载均衡器并使用了一个
  • 我还不知道 CloudFront。
  • 不必直接设置 EC2 实例

最困难的部分之一是安排将 HTTP 流量重定向到 HTTPS。文档引导我找到 .ebextensions 配置解决方案——但这似乎有问题,因为它似乎正在为测试设置一个先有鸡还是先有蛋的问题配置。 当我找到一些关于如何配置负载均衡器规则的文档时,我感到如释重负,这些文档实际上引导我实现了在负载均衡器本身中设置重定向所需的功能: https://docs.aws.amazon.com/elasticloadbalancing/latest/应用程序/listener-update-rules.html#edit-rule

在重定向到 HTTPS 之前,我必须在负载均衡器上设置 HTTPS。 我为此使用的文档是https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-elb.html

为了为我的自定义域设置公共证书,我使用了 ACM: https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html

最初,我使用 Route 53 为我的自定义域设置了一个托管区域。我必须向我的域注册商 godaddy 发送 go,以设置 DNS 条目以使用 Route 53。一旦 DNS 指向 AWS 托管区域DNS 主机,我真的不必再将 go 返回给 godaddy。

我已经进行了大约 4 或 5 天的努力,所以我的头还在旋转。 我最初启动应用程序所遵循的说明是https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html中的说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM