TLS / SSL – SNI对Nginx上运行的域名数量有限制吗?

SNI(服务器名称指示)是对TLS / SSL协议的扩展,允许networking服务器在同一个IP上提供多个域,所有域都具有不同的SSL服务器证书。 SNI发现适合于他们要求的域/ URL的SSL证书。 在SNI之前,所有侦听相同IP和端口的虚拟主机都必须具有相同的SSL证书。

任何人都知道,我可以在同一个IP上服务的域名数量有限制吗?

用标准的http,没有限制。 我只是为每个域指定一个不同的虚拟主机,并且Web服务器将客户机的“主机:”头匹配到匹配的server_name或server_alias虚拟主机。 SNI的工作原理类似,但匹配SSL证书,一个IP上可能有数百个。 我想知道有没有人知道SNI是否有限制,或者在同一个IP上有数百个证书缓慢执行。

SNI本质上与HTTP中的Host头相同。 主要区别在于Host头只在HTTP请求内部,因此只有在TLS握手成功完成后才能被Web服务器看到。 而SNI扩展是在ClientHello内发送的,也就是客户端在TLS握手内发送的初始消息。 然后,服务器从TLS握手中提取SNI扩展,以find匹配的configuration(包括证书),方法与提取Host头的值以find匹配的configuration相同。

基于此,SNI vs Host头部应该没有质的区别,也没有额外的限制。 但是会有一些数量上的区别:与只有Host头相比,SNI需要更多的内存:除了configuration的HTTP部分之外,还需要将SSL部分保存在内存中,特别是证书,证书链和私有键。