如何借助新的AWS Certificate Manager服务将SSL证书添加到AWS EC2


90

AWS提供了一项新服务AWS Certificate Manager。我从描述中得到的一件事是,如果我们正在使用此服务,则不必再为证书付费。

他们正在为Elastic Load Balancer(ELB)和CloudFront提供证书,但是我在任何地方都找不到EC2。

有什么方法可以在EC2中使用证书?


1
您可以通过免费和值得信任的证书查看letsencrypt.org,其中包括chrome和facebook这样的贡献者,这看起来不错
Tom


1
哦,我对此一无所知。但是我认为他们不允许这样做是正确的。您是否可以在另一个域上创建别名(例如通过Route53),而不使用提供的默认aws dns名称?
汤姆(Tom),

我最近遇到了一个视频[2020年4月],他们在其中使用AWS Certificate Manager创建SSL \ TLS证书,然后将其放在负载均衡器后面的EC2实例上。youtu.be/bWPTq8z1vFY真的很有帮助。
nktsamba

Answers:


108

问:我可以在Amazon EC2实例或自己的服务器上使用证书吗?

否。目前,ACM提供的证书只能与特定的AWS服务一起使用。


问:我可以与哪些AWS服务一起使用ACM提供的证书?

您可以将ACM与以下AWS服务一起使用:

•弹性负载平衡

•Amazon CloudFront

•AWS Elastic Beanstalk

•Amazon API网关

https://aws.amazon.com/certificate-manager/faqs/

您无法在无法直接访问底层资源的资源例如EC2或AWS外部的服务器上安装由Amazon Certificate Manager(ACM)创建的证书,因为没有向您提供对私钥的访问权限。这些证书只能部署在由AWS基础架构管理的资源(ELB和CloudFront)上,因为AWS基础架构仅保留其生成的证书的私钥副本,并通过可审核的内部访问控制将其保持在严格的安全性之下。

为了将这些证书用于来自EC2的内容,您必须让EC2机器CloudFront或ELB后面侦听(或两者都可以级联),因为您不能直接在EC2机器上安装这些证书。


10
好消息是,如果您签发了证书并且在此处发现无法安装,则不收取任何费用。
kraftydevil

1
大声笑@kraftydevil我想你有一点,在那里。请注意,letsencrypt.org是免费的SSL证书的合法,公认的非盈利来源,您可以在任何喜欢的地方安装它们。(而且,我可能会补充说,我与Let's Encrypt没有任何隶属关系。)
Michael-sqlbot

6
@EngineerDollery不,仅在一种特定情况下适用。您绝对可以在EC2上使用“让我们加密”。您无法做的是获得EC2*.amazonaws.com主机名的Let's Encrypt证书,因为足够明智地,Let's Encrypt策略不允许这样做……但是对于您控制的指向EC2实例IP,ELB或CloudFront的域,您绝对可以像其他任何地方一样使用Let's Encrypt。
Michael-sqlbot

2
链接到带有自动Lets
Efren,

我按照ELB设置进行了所有设置,现在指向ELB的记录指向502 Bad Gateway
MuaathAli

2

不可以,您不能使用aws证书管理器在EC2上部署证书。只能针对Cloudfront和Elastic Load Balancer部署证书管理器certs。要在ec2上使用它,需要将elb放在ec2之上,以便从客户端到负载均衡器的请求将受到https保护,而从elb到ec2的网络服务器的请求将位于http上。


1

如果您仅将AWS ACM证书用于内部目的,则可以使用AWS ACM私有CA颁发证书(我认为您也可以将其用于公共/外部流量目的,如果您的根CA是公共信任的CA)。

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

在Application / EC2 / Container启动期间,设置一个步骤以将您的ACM私有CA颁发的Cert / Private密钥导出到您的目的地,并开始引用它来服务流量。

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

一件好事是,您可以控制谁可以使用IAM Role调用导出证书功能,因此并非所有人都可以下载证书的私钥。

这样做的一个缺点是,私有CA是昂贵的AWS服务(每月400美元)。 https://aws.amazon.com/certificate-manager/pricing/


您不能将导出证书与ACM PCA一起使用-但您也不需要它:您已经具有私钥,并且get-certificate会给uit提供证书和链。
免费的Willaert

@FreeWillaert我很确定,您不会获得带有get-certificate的私钥部分。查看此CLI文档。还有这个。检查cli响应的两个输出。我已经测试了这些CLI命令。
伊兰(Imran)

@FreeWillaert是:)。上面的CLI命令可以在Docker启动脚本或EC2用户数据脚本中使用,以在运行时下载私钥证书,并开始将其用于服务TLS通信。特别是在ASG中。好处是您可以控制谁可以使用IAM角色调用上述CLI命令,因此并非每个人都可以访问私钥。
伊姆兰

1
@Imran,您应该One downside with this is, private CA is expensive AWS service($400/month).在顶部写粗体,例如,如果我第二次没有阅读此答案,我会错过它
Piekarski D

@PiekarskiD完成。谢谢你的建议!如果您喜欢我的回答,可以随时投票!!
伊姆兰

0

添加到上面的评论中,您不能为此使用AWS Certificate Manager,但是您可以在运行IIS的Windows服务器上将Let's Encrypt证书添加到ec2,这很简单:

  1. 将弹性IP与您的ec2实例相关联。

  2. 确保您已注册域名。您不能使用实例随附的ec2----------.us-east-1.compute.amazonaws.com类型名称。

  3. 通过域提供商的DNS设置,可以将域指向弹性IP。

  4. 连接到您的ec2实例,并将您的域名添加到站点绑定中。

  5. 转到https://github.com/PKISharp/win-acme/releases

  6. 在资产下查找,并使用最新版本(例如,win-acme.v2.0.10.444.zip)。这是您唯一需要的资产文件夹。

  7. 解压缩文件夹,以管理员身份打开终端,然后CD进入解压缩的文件夹。

  8. 运行wacs.exe并按照提示进行操作。

  9. 确保分配给实例的安全组允许通过您在IIS中选择的HTTPS端口进行通信(至少是您自己的IP);默认情况下是端口443。

当我弄清楚这一点时,我发现下面的链接很有帮助。如果您需要更多帮助,以下是使用早期版本的视频,但这是相同的想法。

https://www.youtube.com/watch?v=fq5OUOjumuM

此外,本文可能会有所帮助:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.