【问题标题】:How to use on AWS Opsworks App a certificate bought on AWS Certificate Manager?如何在 AWS Opsworks App 上使用在 AWS Certificate Manager 上购买的证书?
【发布时间】:2017-10-01 00:43:51
【问题描述】:

我在 AWS Opsworks 上部署了一个 Rails 应用程序。 我最近关联了一个购买了 AWS SES 的域,并且我在 AWS Certificate Manager 中获得了该域的证书。

根据documentation,支持的服务有:

  • 弹性负载平衡
  • Amazon CloudFront
  • AWS Elastic Beanstalk
  • 亚马逊 API 网关

我想出的第一个解决方案是将 Elastic Load Balancing 添加到我的层,并将域和证书与其弹性 IP 相关联。

有没有人遇到过同样的挑战?您能提出更好的解决方案吗?

例如有没有办法从 ACM 获取 SSL 证书和 SSL 证书密钥,以便将其添加到我在 Opsworks 中的应用程序设置中?

【问题讨论】:

    标签: amazon-web-services ssl aws-opsworks aws-certificate-manager


    【解决方案1】:

    您无法获取ACM生成的SSL证书密钥,因为您说它仅供AWS提供的4种服务使用。

    您可以尝试的一种解决方案是将 ACM 证书关联到 ELB 并在 ELB 级别执行 SSL 卸载,因此基本上您的侦听器配置将是 443 TCP 到实例中的某个非安全端口(将 ELB 关联到层)。

    【讨论】:

    • 感谢您的建议。我在 EC2 中使用我的 Opsworks 实例创建了一个负载均衡器和一个目标组。在 Route53 中,我设法将我的域与 ELB 别名相关联,并且我还关联了证书。
    • 但是,当我强制使用 Rails 5 config.force_ssl=true 时,我无法重定向流量,因为实例已在目标组中使用端口 80 注册,并且如果不提供证书密钥。此外,目标组中我的实例的健康检查返回不健康,错误为 302
    • @mabe02 看起来您正在使用应用程序负载均衡器,在 ALB 中,您还必须使用 HTTPS(443) 注册您的目标组,并从下拉列表中选择 SSL 证书,然后将流量路由到您的实例。通过在 ALB 级别执行 SSL 卸载,您可以确保没有 SSL 流量到达您的实例,因此您不需要在实例级别强制使用 ssl。
    • 感谢您的评论。我实际上忘了关闭这个话题,因为我找到了我刚刚发布的答案中描述的解决方案。我使用了经典的负载均衡器而不是 ALB,但我想行为应该几乎相同
    【解决方案2】:

    实际上经过一些尝试,我设法按照以下步骤实现了它:

    • 在 EC2 中添加负载平衡
    • 将 LB 指向 Opsworks 实例
    • 将证书添加到LB
    • 在安全组中正确设置监听器配置
    • 在 Route53 的托管区域中创建新的 RecordSet
    • 将 LB 的 RecordSet 添加为 Alias Target

    我在LinkedIn Pulse写了一篇文章,里面放了一些截图和详细的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2017-08-24
      • 2016-11-10
      • 2016-05-12
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多