
# 开启SNI证书实现多域名访问
SNI（Server Name Indication 服务器名称指示）是一种TLS协议的扩展，用于解决在一个监听器托管多个域名时，需要根据不同的请求域名匹配证书进行认证的问题。
#### SNI概述
当您需要在同一个监听器上部署多个HTTPS后端服务时，每个服务可能使用不同的域名和证书，并需要将请求分发至不同的后端服务器组。
如果HTTPS监听器只绑定一个服务器证书，监听器将无法根据客户端请求的域名动态选择对应的证书进行认证，导致多域名场景认证异常。
开启SNI功能支持您扩展监听器上配置的证书，实现监听器根据请求域名的不同自动选择匹配的证书传递到客户端进行认证。客户端在发起SSL握手请求时提交请求的域名信息，ELB在收到请求后根据请求的域名查找对应的证书，如果监听器没有匹配到域名对应的证书，ELB将使用默认的服务器证书进行认证。
#### SNI证书
- SNI证书是用于多域名认证场景的**服务器证书** ，即指定了**SNI扩展域名** 的服务器证书。在ELB控制台指定的**SNI扩展域名**必须与证书实际支持认证的域名保持一致。
- 目前支持一个域名可以同时绑定ECC类型的证书和RSA类型的证书。在选择认证证书时，如果同域名绑定了两个证书，ELB会优先选择ECC类型的证书。
 
#### 约束与限制
- 开启SNI后，需选择SNI证书，具体步骤可参照[创建证书](https://support.huaweicloud.com/usermanual-elb/elb_ug_szs_0003.html)。
- 仅HTTPS 监听器，支持开启SNI功能，支持绑定多个证书。
- 一个HTTPS监听器默认支持配置30个SNI证书，监听器关联的所有SNI证书默认支持的域名总数为30个。
 
#### 证书匹配规则
- 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。
  
- cert-default为创建HTTPS监听器时绑定的默认证书，cert-test01和cert-test02为新创建的用于SNI的证书。 其中，证书cert-test01填写的域名为www.test01.com、cert-test02填写的域名为www.test02.com。
  如果访问负载均衡的域名与SNI证书匹配成功，则会返回SNI证书认证鉴权。如果匹配失败，则会返回默认的服务器证书认证鉴权。
  
 
#### 监听器开启SNI
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。

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