如何通过AWS API为Elastic Beanstalk上的Rails应用配置自定义域名SSL
AWS Elastic Beanstalk自定义域名SSL证书配置(API实操指南)
一、用ACM API生成证书并获取验证CNAME
- 发起证书请求:调用
RequestCertificateAPI,指定目标自定义域名,验证方式选择DNS(ValidationMethod=DNS)。如果需要泛域名支持,添加SubjectAlternativeNames参数。
示例AWS CLI命令(对应API调用):
API返回的响应中,aws acm request-certificate \ --domain-name your-user-domain.com \ --subject-alternative-names *.your-user-domain.com \ --validation-method DNSCertificate.DomainValidationOptions数组里的每个条目包含ResourceRecord对象,里面的Name和Value就是需要用户添加到域名DNS解析的CNAME记录。 - 告知用户验证步骤:把提取到的
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监听器,步骤如下:
- 获取环境对应的ALB ARN:调用
DescribeEnvironmentsAPI,找到目标环境的LoadBalancers字段,提取负载均衡器ARN。 - 更新ALB HTTPS监听器:调用
ModifyListenerAPI(针对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 - 调整安全组(可选):确保环境的EC2安全组允许443端口的入站流量,可通过
UpdateEnvironmentAPI更新环境的安全组配置,或直接调用EC2的AuthorizeSecurityGroupIngressAPI添加规则。
注意:ACM证书必须与负载均衡器处于同一AWS区域,否则无法关联。
内容的提问来源于stack exchange,提问作者Alfie
相关产品推荐
相关产品推荐

