为 elasticbeanstalk 上的 Rails 应用程序提供自定义域 ssl

问题描述 投票:0回答:3

我们已经在 aws elasticbeanstalk (nginx/puma) 上部署了一个 Rails 应用程序

用户可以自由设置自己的自定义域名,我们要求他们添加一条 cname 记录以指向我们的 elasticbeanstalk 域。

但是我们还需要使用 aws ACM 为自定义域生成 ssl 证书。 (如何通过 aws api 做到这一点?) 一旦我们这样做了,我们就可以向用户显示 cname 记录以添加到他们的 dns 提供商以进行域名验证。

那我要调用哪个aws api看ssl证书是否可以使用 以及如何将ssl证书附加到elasticbeanstalk环境(负载均衡器?)

ruby-on-rails amazon-web-services ssl amazon-elastic-beanstalk aws-certificate-manager
3个回答
0
投票

我必须调用哪个 aws api 来查看 ssl 证书是否可以使用

您必须使用 DescribeCertificate 并检查其 Status 是否为

ISSUED
.

通常,你必须实现一个循环来迭代查询状态,例如每 15 秒,直到它发出。但是一些 AWS SDK 为此提供了“服务员”。在红宝石中,您有CertificateValidated服务员。

以及如何将ssl证书附加到elasticbeanstalk环境

要将 SSL 证书添加到 ALB,您必须使用 AddListenerCertificates API 到您的 EB 的负载均衡器。


0
投票

AWS Certificate Manager (ACM) 有一个 RequestCertificate API,可用于请求证书。 需要特别注意 DnsValidationOption,这也可以通过电子邮件或 DNS-Record 完成。两者都有不同的用户流量。

  • 电子邮件:需要是@USER-CNAME
  • DNS-Record:用户需要在其 DNS 中添加一个 DNS 条目。需要添加的记录可以在 DescribeCertificate 调用中看到(请参阅页面上的最后一个示例,了解用于 DNS 验证的响应 JSON)。

AWS 页面还显示了有关如何调用 API 的示例。调用 API 后,ARN 为被调用方所知。 ARN 可用于描述和检查当前状态。这必须通过重复轮询(如其他问题所述)来完成,或者您可以通过 EventBridge 获取事件。 后一个特别有用,因为它还包含以下事件:

  • 更新
  • 已发行
  • 和过期。

您可以在这里找到活动信息

AWS 文档还在底部包含指向 SDK 的链接,例如 Ruby


0
投票

我认为您正在寻找的是用于实施的无服务器解决方案

这是我的快速思考解决方案,您可以尝试:

API Gateway --> Lambda (Request) --> SQS --> Lambda (Verify) --> SNS (E-mail) --> Lambda (Attach)

您可以使用 REST/HTTP API 创建一个简单的后端,例如

/request
代理对用于请求 ACM 证书的 Lambda 函数的请求。您可以尝试使用 ValidationMethod 的 Python3/Boto3 成为
EMAIL
。完成后,将消息发送到 SQS 延迟队列(即:10 分钟)。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/acm.html#ACM.Client.request_certificate

然后,用于验证的 Lambda 函数将能够检查您的客户是否在允许的时间(10 分钟)内接受了验证,然后您可以向他们发送 SNS 通知 或任何电子邮件机制以获取

 Success
状态。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/acm.html#ACM.Client.describe_certificate

您还可以订阅另一个 Lambda 函数来处理您的 ElasticBeanstalk 负载均衡器 修改的后续步骤。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/elbv2.html#ElasticLoadBalancingv2.Client.modify_listener

© www.soinside.com 2019 - 2024. All rights reserved.