如何从 AWS Certificate Manager 导出我的域证书以导入到 Java 密钥库?
How to export my domain cert from AWS Certificate Manager for import into Java keystore?
我直接从 Amazon 购买了域名 'jimtough.org',因此我可以将其用于 Cloudfront 分发。现在我在 https://jimtough.org/ 有一个使用证书的非常简单的虚荣网站。我还玩过 AWS API 网关并确认我可以使用相同的证书来提供 HTTPS 安全 URL 以与 API 网关一起使用。
我也是 运行 Java/Spring 在 EC2 服务器上启动 Web 应用程序。我已经将 Route53 DNS 名称与托管我的 Spring 引导应用程序的 EC2 服务器相关联,如下所示:http://instance-b.jimtough.org/。这有效,但它使用的是不安全的 HTTP。当我尝试在应用程序中进行基本身份验证时收到一堆警告,因为它会通过不安全的连接发送我的 username/password。很公平。
所以我的下一步是在 Spring 安全中启用 HTTPS 并强制安全连接到应用程序。为此,我首先需要为 EC2 主机上的 Java 运行时提供证书以供使用。我找到了如何使用自签名证书 :
的示例
- https://mkyong.com/spring-boot/spring-boot-ssl-https-examples/
- https://www.baeldung.com/spring-boot-https-self-signed-certificate
不幸的是,使用自签名证书不是我想要的。我希望用户能够首先浏览我的静态内容虚荣网站 (https://jimtough.org/),然后跟随 link 到我的 Web 应用程序并继续使用相同的站点证书(我的 AWS 颁发的证书)对于我的 Spring 网络应用。
问题:如何将 AWS 颁发的证书用于基于 Java 的 Web 应用程序?
在 AWS Certificate Manager (https://console.aws.amazon.com/acm/home?region=us-east-1#/) 中,我看不到 'export' 或保存我的证书的任何方法。我错过了什么吗?也许亚马逊不希望我在他们自己的服务之外使用这个证书?
请注意,我最初设置的证书的域名为 'jimtough.org',附加名称字段设置为“*.jimtough.org”,因此我可以在子域上使用证书正如我在这里尝试做的那样。
编辑
julien-b 接受的答案是正确的。我做了一些更多的研究,发现 SSL 证书并不便宜,而且有不同的风格。最便宜的是 'DV'(域验证)类型,它仅验证 SSL 证书是否由同时控制关联域的 DNS 记录的人控制(例如 'mydomain.com')。可以颁发更彻底(且昂贵)的证书类型,其中颁发者必须对所属组织进行背景调查。这些适用于处理电子商务、金融交易等的网站。根本不是我需要的。
还有多种类型的多站点证书可供选择。最便宜的单域证书仅涵盖您的主域和 'www' 子域(mysite.com 和 www.mysite.com)。如果您想要涵盖主域的所有子域(app.mysite.com、ftp.mysite.com 等),那么您将需要一个 'wildcard' 证书。那些要贵得多。更奇特的证书类型可以涵盖多个不同的域。这些似乎旨在使管理许多不同域并且不需要为每个不同证书的组织更容易地管理证书。不是我需要的,所以我没有进一步调查。
我决定使用 Comodo(最近更名为 Sectigo?)的 'single-domain with subdomain wildcard' 证书,它似乎是目前最实惠的证书供应商。
参考:https://www.techradar.com/news/best-ssl-certificate-provider
Amazon 似乎错失了机会,他们没有加入这场游戏并免费颁发自己的 SSL 证书。 AWS 已经具备了这样做的所有基础设施,至少对于 DV 级别的证书是这样。
您无法导出公开信任的 ACM 证书的私钥。您可以将 ACM 证书与某些托管服务一起使用,但它并不适用于所有用例。
https://docs.aws.amazon.com/acm/latest/userguide/export-private.html
AWS Certificate Manager is integrated with other AWS services, so you
can provision an SSL/TLS certificate and deploy it with your Elastic
Load Balancer, Amazon CloudFront distribution or API in Amazon API
Gateway. AWS Certificate Manager also works with AWS Elastic Beanstalk
and AWS CloudFormation for public email-validated certificates to help
you manage public certificates and use them with your applications in
the AWS Cloud.
https://aws.amazon.com/certificate-manager/features/?nc=sn&loc=2
如果您想要在未与 ACM 集成甚至本地的服务上使用证书,您应该从其他来源获取证书。
至于 ACM Private CA,它旨在在组织内使用,因此与您的用例不匹配。
https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaWelcome.html
我直接从 Amazon 购买了域名 'jimtough.org',因此我可以将其用于 Cloudfront 分发。现在我在 https://jimtough.org/ 有一个使用证书的非常简单的虚荣网站。我还玩过 AWS API 网关并确认我可以使用相同的证书来提供 HTTPS 安全 URL 以与 API 网关一起使用。
我也是 运行 Java/Spring 在 EC2 服务器上启动 Web 应用程序。我已经将 Route53 DNS 名称与托管我的 Spring 引导应用程序的 EC2 服务器相关联,如下所示:http://instance-b.jimtough.org/。这有效,但它使用的是不安全的 HTTP。当我尝试在应用程序中进行基本身份验证时收到一堆警告,因为它会通过不安全的连接发送我的 username/password。很公平。
所以我的下一步是在 Spring 安全中启用 HTTPS 并强制安全连接到应用程序。为此,我首先需要为 EC2 主机上的 Java 运行时提供证书以供使用。我找到了如何使用自签名证书 :
的示例- https://mkyong.com/spring-boot/spring-boot-ssl-https-examples/
- https://www.baeldung.com/spring-boot-https-self-signed-certificate
不幸的是,使用自签名证书不是我想要的。我希望用户能够首先浏览我的静态内容虚荣网站 (https://jimtough.org/),然后跟随 link 到我的 Web 应用程序并继续使用相同的站点证书(我的 AWS 颁发的证书)对于我的 Spring 网络应用。
问题:如何将 AWS 颁发的证书用于基于 Java 的 Web 应用程序?
在 AWS Certificate Manager (https://console.aws.amazon.com/acm/home?region=us-east-1#/) 中,我看不到 'export' 或保存我的证书的任何方法。我错过了什么吗?也许亚马逊不希望我在他们自己的服务之外使用这个证书?
请注意,我最初设置的证书的域名为 'jimtough.org',附加名称字段设置为“*.jimtough.org”,因此我可以在子域上使用证书正如我在这里尝试做的那样。
编辑
julien-b 接受的答案是正确的。我做了一些更多的研究,发现 SSL 证书并不便宜,而且有不同的风格。最便宜的是 'DV'(域验证)类型,它仅验证 SSL 证书是否由同时控制关联域的 DNS 记录的人控制(例如 'mydomain.com')。可以颁发更彻底(且昂贵)的证书类型,其中颁发者必须对所属组织进行背景调查。这些适用于处理电子商务、金融交易等的网站。根本不是我需要的。
还有多种类型的多站点证书可供选择。最便宜的单域证书仅涵盖您的主域和 'www' 子域(mysite.com 和 www.mysite.com)。如果您想要涵盖主域的所有子域(app.mysite.com、ftp.mysite.com 等),那么您将需要一个 'wildcard' 证书。那些要贵得多。更奇特的证书类型可以涵盖多个不同的域。这些似乎旨在使管理许多不同域并且不需要为每个不同证书的组织更容易地管理证书。不是我需要的,所以我没有进一步调查。
我决定使用 Comodo(最近更名为 Sectigo?)的 'single-domain with subdomain wildcard' 证书,它似乎是目前最实惠的证书供应商。
参考:https://www.techradar.com/news/best-ssl-certificate-provider
Amazon 似乎错失了机会,他们没有加入这场游戏并免费颁发自己的 SSL 证书。 AWS 已经具备了这样做的所有基础设施,至少对于 DV 级别的证书是这样。
您无法导出公开信任的 ACM 证书的私钥。您可以将 ACM 证书与某些托管服务一起使用,但它并不适用于所有用例。
https://docs.aws.amazon.com/acm/latest/userguide/export-private.html
AWS Certificate Manager is integrated with other AWS services, so you can provision an SSL/TLS certificate and deploy it with your Elastic Load Balancer, Amazon CloudFront distribution or API in Amazon API Gateway. AWS Certificate Manager also works with AWS Elastic Beanstalk and AWS CloudFormation for public email-validated certificates to help you manage public certificates and use them with your applications in the AWS Cloud.
https://aws.amazon.com/certificate-manager/features/?nc=sn&loc=2
如果您想要在未与 ACM 集成甚至本地的服务上使用证书,您应该从其他来源获取证书。
至于 ACM Private CA,它旨在在组织内使用,因此与您的用例不匹配。
https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaWelcome.html