You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS API为Elastic Beanstalk上的Rails应用配置自定义域名SSL

AWS Elastic Beanstalk自定义域名SSL证书配置(API实操指南)

一、用ACM API生成证书并获取验证CNAME

  1. 发起证书请求:调用RequestCertificate API,指定目标自定义域名,验证方式选择DNS(ValidationMethod=DNS)。如果需要泛域名支持,添加SubjectAlternativeNames参数。
    示例AWS CLI命令(对应API调用):
    aws acm request-certificate \
      --domain-name your-user-domain.com \
      --subject-alternative-names *.your-user-domain.com \
      --validation-method DNS
    
    API返回的响应中,Certificate.DomainValidationOptions数组里的每个条目包含ResourceRecord对象,里面的Name和Value就是需要用户添加到域名DNS解析的CNAME记录。
  2. 告知用户验证步骤:把提取到的Name和Value提供给用户,让他们在域名服务商后台添加这条CNAME记录,完成DNS验证。

二、查询证书状态的API

调用DescribeCertificate API,传入证书ARN作为参数,通过返回结果的Status字段判断证书状态:

  • PENDING_VALIDATION:等待用户完成DNS验证
  • ISSUED:证书已签发,可正常使用
  • FAILED:验证失败,需检查CNAME记录是否正确或域名归属权限
    示例调用:
aws acm describe-certificate \
  --certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx

三、将证书附加到Elastic Beanstalk环境

Elastic Beanstalk的Nginx/Puma环境默认会创建Application Load Balancer(ALB),证书需要关联到ALB的HTTPS监听器,步骤如下:

  1. 获取环境对应的ALB ARN:调用DescribeEnvironments API,找到目标环境的LoadBalancers字段,提取负载均衡器ARN。
  2. 更新ALB HTTPS监听器:调用ModifyListener API(针对ALB),将ACM证书ARN绑定到443端口的监听器上。
    示例命令:
    aws elbv2 modify-listener \
      --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/your-alb/xxxx/xxxx \
      --certificates CertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx
    
  3. 调整安全组(可选):确保环境的EC2安全组允许443端口的入站流量,可通过UpdateEnvironment API更新环境的安全组配置,或直接调用EC2的AuthorizeSecurityGroupIngress API添加规则。

注意:ACM证书必须与负载均衡器处于同一AWS区域,否则无法关联。

内容的提问来源于stack exchange,提问作者Alfie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:25:15