技术博客 > 正文

CDN加速之HTTPS—SNI技术如何发挥作用

2020-11-25

CDN加速能够支持多种协议,针对常规HTTP请求,服务器通过HTTP请求头部获得用户的域名信息然后返回对应域名的内容。

而针对HTTPS协议,即安全的HTTP协议,它是由HTTP+SSL/TLS协议组成。SSL/TLS协议建立安全的加密传输通道,用以安全的传输密码等敏感的HTTP数据。面对HTTPS请求,服务器在请求HTTP内容前需要先建立SSL加密通道。建立SSL加密通道过程中需要进行身份认证,服务器要向客户端发送其请求域名的证书,由于此时无法获取HTTP请求头信息所以无法获取域名。在实际运用中,为了能正确返回对应域名的证书,服务器通过用ip绑定证书方式解决,即只要ip1绑定证书a,则每一个发往ip1的https请求,服务器都会返回证书a。

SNI,英文全称Server Name Indication ,中文全名服务器名字指示,它允许客户端在服务器端向其发送证书之前发送域名给服务器,这使得服务器可以在SSL握手阶段就知道域名,然后正确发送对应域名证书。因此,如果客户端和服务器支持SNI,不用通过一个IP绑定一个证书,每个IP上可以部署多张证书。

支持SNI的应用程序是建立在SSL通信的基础上的。调用操作系统实现的SSL通信的API的应用程序,是不能在不支持SNI的操作系统上使用的。2011年开始大部分浏览器中封装了支持SNI的SSL应用程序,不支持SNI的往往是和操作系统结合起来使用的一小部分。

传统HTTPS加速,由于证书需要同IP绑定,对于每一个证书,CDN加速需要单独提供一套服务ip,但IP地址目前来说是供不应求(全球IPV4地址已经全部耗尽),并且购买ip需要较大成本。所以HTTPS域名加速节点数量受到限制,比常规HTTP域名少,并且不能随意扩展或调整资源。

针对IP绑定证书方式瓶颈, SNI技术能够使一个ip部署多个证书,则多个HTTPS客户可以共享ip,使HTTPS加速服务方式同常规HTTP相同。

网宿CDN加速支持HTTPS-SNI方案,源站无须做任何改动,所有使用SNI的HTTPS客户部署在证书平台上,共享一套服务IP,避免每个证书单独一套ip,从而节省ip成本。