Elastic Beanstalk ALB是否支持绑定多个SSL证书?
Elastic Beanstalk ALB 多SSL证书绑定方案
首先可以明确:Elastic Beanstalk 关联的 ALB(应用负载均衡器)支持绑定1个以上的SSL证书,完全可以满足你让客户自行添加域名解析的需求。
核心实现逻辑
ALB本身支持SNI(服务器名称指示)机制,单个HTTPS监听器最多可以挂载25个SSL证书,不同域名的HTTPS请求会自动匹配对应域名的证书完成验证。
具体操作路径
静态多证书绑定(适合域名固定的场景)
EB控制台默认配置界面仅支持选择1个SSL证书,要绑定多个证书需要通过.ebextensions配置文件实现:
- 在应用部署包的根目录创建
.ebextensions文件夹,新增任意后缀为.config的YAML格式配置文件 - 参考如下示例填写配置,替换为你自己的证书ARN、区域等参数:
option_settings: aws:elbv2:listener:443: Protocol: HTTPS SSLCertificateArns: "arn:aws:acm:region:account-id:certificate/证书1ID,arn:aws:acm:region:account-id:certificate/证书2ID" SSLPolicy: ELBSecurityPolicy-TLS13-1-2-2021-06
- 重新部署EB环境后配置即可生效
动态证书挂载(适合客户自助添加域名的场景)
如果需要支持客户随时新增域名,不需要每次都重新打包部署EB应用,可以配合ACM API和ALB API实现自动化流程:
- 客户在自己的域名服务商处添加CNAME记录,指向你EB环境对应的ALB公网地址
- 你侧调用ACM API为客户的新域名签发SSL证书,优先选择HTTP验证方式,ALB可以自动转发验证请求完成域名所有权校验
- 调用ELBv2的
AddListenerCertificatesAPI,将新签发的证书ARN添加到ALB 443监听器的证书列表中,全程不需要重启EB环境,对现有业务无影响
注意事项
- 需确保客户使用的客户端支持SNI协议,目前主流浏览器、移动端操作系统均已原生支持,老旧不支持SNI的客户端会默认匹配ALB挂载的第一个证书,可能出现证书不信任报错
- 单个ALB的HTTPS监听器最多支持挂载25个SSL证书,若客户域名量级超过该限制,可使用通配符证书合并同一根域名下的多个子域名,或改用CloudFront作为接入层承载更多域名证书
- 所有挂载到ALB的SSL证书必须和ALB位于同一个AWS区域,且已完成签发验证流程
- 如果通过API动态添加证书,后续重新部署EB环境时,若
.ebextensions中的证书列表未同步更新,动态添加的证书会被EB的默认配置覆盖,建议要么每次新增证书后同步更新配置文件,要么将SSL证书挂载逻辑完全移出EB配置,统一通过AWS API/CLI管理ALB监听器的证书列表
内容的提问来源于stack exchange,提问作者Anton Swanevelder
相关产品推荐
相关产品推荐

