证书
SNI(Server Name Indication)是用来改善 SSL 和 TLS 的一项特性,它允许客户端在服务器端向其发送证书之前向服务器端发送请求的域名,服务器端根据客户端请求的域名选择合适的SSL证书发送给客户端。
通常情况下一个 SSL 证书只包含一个静态域名,配置一个 ssl
参数对象,它包括 cert
、key
和sni
三个属性,详细如下:
cert
: SSL 密钥对的公钥,pem 格式snis
: SSL 证书所指定的一个或多个域名,注意在设置这个参数之前,你需要确保这个证书对应的私钥是有效的。
一个 SSL 证书的域名也可能包含泛域名,如*.test.com
,它代表所有以结尾的域名都可以使用该证书。
比如*.test.com
,可以匹配 www.test.com
、mail.test.com
甚至a.b.test.com
。
看下面这个例子,请注意我们把 *.test.com
作为 sni 传递进来:
如果你期望为一个域名配置多张证书,例如以此来同时支持使用 ECC 和 RSA
的密钥交换算法,那么你可以将额外的证书和私钥(第一张证书和其私钥依然使用 和 key
)配置在 certs
和 keys
中。
certs
:PEM 格式的 SSL 证书列表
APISIX
会将相同下标的证书和私钥配对使用,因此 certs
和 keys
列表的长度必须一致。