【问题标题】:How to add SSL certificate to AWS EC2 with the help of new AWS Certificate Manager service如何借助新的 AWS Certificate Manager 服务将 SSL 证书添加到 AWS EC2
【发布时间】:2016-01-22 11:10:22
【问题描述】:

AWS 推出了一项新服务 AWS Certificate Manager。我从描述中得到的一件事是,如果我们使用这项服务,我们就不必再为证书付费了。

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

有什么方法可以将证书与 EC2 一起使用?

【问题讨论】:

  • 你可以看看letsencrypt.org 获得免费且值得信赖的证书,Chrome 和 facebook 等贡献者看起来还不错
  • 哦,我不知道这个。但是我认为他们不允许这样做是正确的。您能否在另一个域上创建别名(例如通过 Route53)而不使用提供的默认 aws dns 名称?
  • 我最近刚刚看到一个视频 [4 月 - 2020 年],他们使用 AWS Certificate Manager 创建了 SSL \ TLS 证书,然后将其放到负载均衡器后面的 EC2 实例上。 youtu.be/bWPTq8z1vFY 真的很有帮助。

标签: amazon-web-services ssl amazon-ec2


【解决方案1】:

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

没有。目前,ACM 提供的证书只能用于特定的 AWS 服务。


问:我可以通过哪些 AWS 服务使用 ACM 提供的证书?

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

• 弹性负载平衡

• Amazon CloudFront

• AWS Elastic Beanstalk

• 亚马逊 API 网关

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

您无法将Amazon Certificate Manager (ACM) 创建的证书安装在您具有直接低级访问权限的资源上,例如 EC2 或 AWS 之外的服务器,因为您无法访问私钥。这些证书只能部署在由 AWS 基础设施(ELB 和 CloudFront)管理的资源上,因为 AWS 基础设施拥有其生成的证书的唯一私钥副本,并通过可审计的内部访问控制在严格的安全性下维护它们.

为了将这些证书用于来自 EC2 的内容,您必须让您的 EC2 机器在背后 CloudFront 或 ELB(或两者,级联,也可以工作)进行监听...因为您无法直接在 EC2 机器上安装这些证书。

【讨论】:

  • 好消息是,如果您颁发了证书,但在此处发现无法安装,则无需支付任何费用。
  • 大声笑@kraftydevil 我想你说得有道理。请注意,letsencrypt.org 是一个合法的、公认的、非营利的免费 SSL 证书来源,您可以将其安装在您喜欢的任何地方。 (而且,我可能会补充一点,我与 Let's Encrypt 没有任何关系。)
  • @EngineerDollery 不,这仅适用于一种特定情况。您绝对可以在 EC2 上使用 Let's Encrypt。您不能做的是为 EC2 *.amazonaws.com 主机名获取 Let's Encrypt 证书,因为,足够明智的是,Let's Encrypt policy doesn't allow it... 但是对于您控制的指向 EC2 实例 IP、ELB 或 CloudFront 的域,您最绝对可以使用 Let's Encrypt,和其他任何地方一样。
  • 链接到一个示例,其中包含部署在 EC2 上的自动 Let 加密证书:docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
  • 我跟着 ELB 设置一切,现在当我将 A 记录指向 ELB 时,我得到 502 Bad Gateway
【解决方案2】:

不,您不能使用 aws 证书管理器在 EC2 上部署证书。证书管理器证书只能针对云端和弹性负载均衡器进行部署。 Inoredr 要在 ec2 上使用它,您需要将 elb 放在 ec2 之上,这样客户端到负载均衡器的请求将受到 https 保护,而从 elb 到 ec2 网络服务器的请求将在 http 上。

【讨论】:

    【解决方案3】:

    如果您仅将 AWS ACM 证书用于内部目的,那么您可能会使用 AWS ACM 私有 CA 来颁发证书。(如果您的根 CA 是公开信任的,我认为您也可以将其用于公共/外部流量目的加利福尼亚州)。

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

    在应用程序/EC2/Container 启动期间,设置一个步骤以将您的 ACM 私有 CA 颁发的证书/私钥导出到您的目的地,并开始引用它来为流量提供服务。

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

    一件好事是,您可以使用 IAM 角色控制谁可以调用导出证书功能,所以不是每个人都可以下载证书的私钥。

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

    【讨论】:

    • 您不能将 export-certificate 与 ACM PCA 一起使用 - 但您也不需要它:您已经拥有私钥,并且 get-certificate 会为您提供证书和链。
    • @FreeWillaert 我很确定,您不会通过 get-certificate 获得私钥部分。检查此 CLI documentation。和this。检查 cli 响应的两个输出。我已经测试过这些 CLI 命令。
    • @FreeWillaert 是的 :)。上述 CLI 命令可用于 Docker 启动脚本或 EC2 用户数据脚本,以在运行时下载私钥证书并开始利用它们来服务 TLS 流量。特别是在 ASG。好的部分是您可以使用 IAM 角色控制谁可以调用上述 CLI 命令,因此不是每个人都可以访问私钥。
    • @Imran 你应该在顶部写上粗体 One downside with this is, private CA is expensive AWS service($400/month). 例如,如果我没有第二次阅读这个答案,我会错过它
    • @PiekarskiD 完成。谢谢你的建议!!。如果你喜欢我的回答,你可以随时投票!!。
    【解决方案4】:

    除了上面的 cmets,您不能为此使用 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. 确保分配给您的实例的安全组允许流量(至少您自己的 IP)通过您在 IIS 中选择的 HTTPS 端口;这是默认的 443 端口。

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

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

    这篇文章也可能会有所帮助:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 2023-03-13
      • 2020-01-01
      • 2018-08-20
      • 2018-01-28
      • 1970-01-01
      相关资源
      最近更新 更多