更新时间:2024-09-20 GMT+08:00

开启SNI证书实现多域名访问

SNI(Server Name Indication)是一种TLS协议的扩展,用于解决在一个服务器使用多个域名证书时如何正确匹配证书的问题。

操作场景

当您需要在同一个监听器中根据HTTPS请求域名的不同来选择不同的证书进行认证,并将请求分发至不同的后端服务器组时,可以通过开启SNI功能来实现配置多域名HTTPS网站。

开启SNI之后,用户需要为监听器添加域名对应的SNI证书。客户端在发起SSL握手请求时提交请求的域名信息,负载均衡在收到SSL请求后,会根据请求的域名查找对应的证书。如果找到域名对应的SNI证书,则使用该证书进行认证。如果没有找到域名对应的SNI证书,则使用服务器证书完成认证。

约束与限制

  • 开启SNI后,需选择SNI证书,具体步骤可参照创建证书
  • 仅HTTPS 监听器,支持开启SNI功能,支持绑定多个证书。
  • 一个HTTPS监听器默认支持配置30个SNI证书,监听器关联的所有SNI证书默认支持的域名总数为30个。

SNI证书约束

  • SNI证书:用于SNI扩展认证的服务器证书,需要指定域名,且指定的域名必须与证书中的域名保持一致。
  • 目前支持一个域名可以同时绑定ECC类型的证书和RSA类型的证书。在选择SNI证书时,支持选择同域名绑定的两个证书,使用时ELB会优先选择ECC类型的证书。

证书匹配规则

  • SNI证书匹配规则:

    当证书的域名为*.test.com,那么可支持a.test.com、b.test.com等,不支持a.b.test.com、c.d.test.com等。

    且依据最长尾缀匹配:当证书中的域名同时存在*.b.test.com和*.test.com时,那么a.b.test.com会优先匹配到*.b.test.com。

  • 证书示例如图1所示,图中的cert-default为创建HTTPS监听器时绑定的默认证书,cert-test01和cert-test02为新创建的用于SNI的证书。

    其中,证书cert-test01填写的域名为www.test01.com、cert-test02填写的域名为www.test02.com。

    如果访问负载均衡的域名与SNI证书匹配成功,则会返回SNI证书认证鉴权。如果匹配失败,则会返回默认的服务器证书认证鉴权。
    图1 配置证书说明

监听器开启SNI

  1. 进入弹性负载均衡列表页面
  1. 在弹性负载均衡列表页面,单击目标负载均衡器的名称。
  2. 在“监听器”页签,单击需要开启SNI的监听器名称。
  3. 在监听器基本信息页面,单击SNI右侧“配置”。
  4. 开启SNI的开关,选择需要配置的SNI证书。
  5. 单击“确定”。