如何从AWS证书管理器导出我的域名证书以便导入Java密钥库?

5
我直接从亚马逊购买了域名“jimtough.org”,以便将其与Cloudfront分发一起使用。现在,我在https://jimtough.org/上拥有一个非常简单的虚荣网站,并使用证书。我还尝试了AWS API Gateway并确认可以使用相同的证书来提供HTTPS安全的URL以便与API Gateway一起使用。
我还在EC2服务器上运行Java/Spring Boot Web应用程序。我已经将Route53 DNS名称与托管我的Spring Boot应用程序的EC2服务器相关联,如此:http://instance-b.jimtough.org/。这个方法可行,但它是使用不安全的HTTP。当我尝试在应用程序中执行基本身份验证时,会收到一堆警告,因为它将通过不安全的连接发送我的用户名/密码。这很公正。
所以我的下一步是启用Spring Security中的HTTPS并强制对应用程序进行安全连接。为此,我首先需要为EC2主机上的Java运行时提供证书。我找到了使用自签名证书的示例: 很遗憾,使用自签名证书并不是我想要的。我希望用户能够先浏览我的静态内容个人网站(https://jimtough.org/),然后通过链接访问我的Web应用程序,并继续使用同一站点证书(我的AWS颁发的证书)来访问Spring Web应用程序。
问题:如何在基于Java的Web应用程序中使用我的AWS颁发的证书?
在AWS证书管理器(https://console.aws.amazon.com/acm/home?region=us-east-1#/)中,我没有看到任何“导出”或保存证书的方法。我错过了什么吗?也许亚马逊不希望我在他们自己的服务之外使用这个证书?
请注意,我最初设置了域名为“jimtough.org”,附加名称字段设置为“*.jimtough.org”,因此我可以在子域上使用证书,就像我在这里尝试的那样。

编辑

julien-b的答案是正确的。我进行了更多的研究,发现SSL证书并不便宜,并且有不同的类型。最便宜的是“DV”(域验证)类型,仅验证SSL证书由控制相关域名的DNS记录的人控制(例如“mydomain.com”)。还有更彻底(也更昂贵)的证书类型可以颁发,其中颁发机构必须对拥有组织进行背景调查。这些证书适用于处理电子商务、金融交易等网站。这完全不是我需要的。

还有多种类型的多站点证书可供选择。最便宜的单域名证书只覆盖您的主域名和“www”子域名(mysite.com和www.mysite.com)。如果您想要覆盖主域名的所有子域名(app.mysite.com,ftp.mysite.com等),那么您将需要一个“通配符”证书。这些证书价格显著更高。更奇特的证书类型可以涵盖多个不同的域。这些似乎旨在为管理许多不同域的组织简化证书管理,并且不需要为每个域使用不同的证书。这不是我所需要的,因此我没有进一步调查。

我决定选择来自Comodo(最近更名为Sectigo?)的“带子域通配符”的单域名证书,他们似乎是目前最实惠的证书供应商。

参考:https://www.techradar.com/news/best-ssl-certificate-provider

似乎亚马逊错过了一个机会,他们没有发行自己的SSL证书并收费。AWS已经有了完成此类操作所需的所有基础设施,至少对于DV级别的证书来说是如此。

1
您无法导出 ACM 证书的私钥。AWS 简单地不允许这样做。 - Julien B.
@JulienB. - AWS上还有其他可用的选择吗?我在证书管理器相同页面看到了“私有证书颁发机构”部分,但我不熟悉该服务。他们的价格页面显示:“每个ACM私有CA每月$400.00,直到您删除CA。”如果AWS只提供这些选项,那我会选择其他选项。 - Jim Tough
1个回答

2
您不能导出公共信任的ACM证书的私钥。您可以在某些托管服务中使用ACM证书,但并非所有用例都适用。
AWS证书管理器与其他AWS服务集成,因此您可以为您的弹性负载平衡器、Amazon CloudFront分发或Amazon API网关中的SSL/TLS证书进行规划和部署。AWS证书管理器还可与AWS Elastic Beanstalk和AWS CloudFormation一起使用公共电子邮件验证证书,以帮助您管理公共证书并在AWS云中与应用程序一起使用。
如果您想要在未经过ACM或本地的服务上使用证书,则应从另一个来源获取证书。
至于ACM Private CA,则旨在在组织内部使用,因此不符合您的用例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接