6大网络技术,优化全站HTTPS加密性能
HTTPS加密的应用已经成为互联网主流趋势,启用全站HTTPS网站也越来越多。由于TLS握手过程会给HTTPS增加多个RTT网络传输时间,很多网站担心速度性能受到影响。但随着技术的迭代更新,越来越多的网络技术对HTTPS更加友好,合理配置使用新的网络技术优化HTTPS性能可以让全站HTTPS加密全面提速。
服务器开启HSTS
用户习惯于使用HTTP请求你的网站,为了让用户能够自动切换至HTTPS,需要强制302/301跳转到HTTPS,这样的跳转会至少增加1个RTT的延时,302跳转后要再次TCP建连,增加1个RTT的延时。合理使用HSTS,可以要求浏览器对HTTP访问的URL重写成HTTPS,避免始终强制302重定向带来的延时开销。
HSTS(HTTP Strict Transport Security,HTTP严格传输安全协议)的实现原理是:当浏览器第一次HTTP请求服务器时,返回的响应头中增加Strict-Transport-Security,告诉浏览器在指定的时间内,这个网站必须通过HTTPS协议来访问。也就是对于这个网站的HTTP地址,浏览器需要现在本地替换为HTTPS之后再发送请求。
沃通CA建议服务器开启HSTS的方法是:当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。最佳的部署方案是部署在离用户最近的位置,例如:架构有前端反向代理和后端Web服务器,在前端代理处配置HSTS是最好的,否则就需要在Web服务器层配置HSTS。如果Web服务器不明确支持HSTS,可以通过增加响应头的机制。如果其他方法都失败了,可以在应用程序层增加HSTS。
HSTS启用比较简单,只需在相应头中加上如下信息:
Strict-Transport-Security: max-age=63072000; includeSubdomains;preload;
Strict-Transport-Security是Header字段名,max-age代表HSTS在客户端的生效时间。 includeSubdomains表示对所有子域名生效,preload是使用浏览器内置的域名列表。
HSTS策略只能在HTTPS响应中进行设置,网站必须使用默认的443端口,必须使用域名,不能是IP。因此需要把HTTP重定向到HTTPS,如果明文响应中允许设置HSTS头,中间人攻击者就可以通过在普通站点中注入HSTS信息来执行DoS攻击。
合理使用HTTPS会话恢复
HTTPS会话恢复机制(Session Resumption)是指在一次完整协商的连接断开时,客户端和服务端会将会话的安全参数保存一段时间。后续的连接时,双方使用简单握手恢复之前协商的会话,大大减少了TLS握手的开销。
HTTPS会话恢复的方案可以分为两种:会话ID(Session ID)和会话票证(Session Ticket)。会话ID通过服务端为会话指定唯一的标识,并缓存会话状态。在第一次完整协商的过程中,ServerHello消息中将会话ID发回客户端。希望恢复会话的客户端在下一次握手中将会话ID放入ClientHello,服务端认可后接着使用之前协商的主密钥进行加密,而会话票证将所有会话状态保持在客户端(类似于HTTP Cookie)。
HTTPS会话恢复机制可以有效减少多次访问时的握手次数,降低访问延迟,但是也存在一定的弊端。会话恢复依赖于初始握手期间传递给客户端设备的会话恢复标识符,并且这个标识符在浏览器TLS缓存中持续存在,管理配置不当可能会导致会话恢复标识符被跟踪。因此,沃通CA建议HTTPS会话恢复标识符应合理设置一个更短的到期时间。
服务器设置OCSP Stapling
OCSP(Online Certificate Status Protocol, 在线证书状态协议)通常是 CA 提供用来实时查询证书是否合法有效、有没有被吊销的一套查询验证机制。客户端就可以根据证书中的 OCSP 信息,发送查询请求到 CA 的在线验证地址来查询证书是否有效。OCSP 实时查询会增加浏览器的握手延时,因此可以考虑通过OCSP Stapling的方案来解决。
OCSP Stapling是一种允许在TLS握手中包含吊销信息的协议功能。启用OCSP stapling后,服务端可以代替客户端完成证书吊销状态的检测,当客户端访问站点时,在握手阶段就可以直接拿到 OCSP 响应结果和证书链,不需要再向 CA 请求接口,对访问速度有明显提升。咨询沃通CA技术支持了解OCSP Stapling设置方法。
SNI功能的合理使用
早期的SSL技术根据经典的PKI公钥基础设施设计,默认一台服务器(一个IP)只会提供一个服务,所以SSL握手时服务端可以确信客户端请求的是哪张证书。然而,虚拟主机的大力发展造成了一个IP对应多个域名的情况。在HTTP协议中,请求的域名作为主机头(Host)放在HTTP Header中,所以服务器端知道应该把请求引向哪个域名,但是早期的SSL做不到这一点,因为在SSL握手的过程中,根本不会有Host的信息,所以服务器端通常返回的是配置中的第一个可用证书。因而一些较老的环境,可能会产生多域名分别配好了证书,但返回的始终是同一个。
SNI扩展(Server Name Indication, 服务器名称指示)定义在RFC 4366,主要用于同一IP配置多个HTTPS主机 的场景中,它允许客户端在发起SSL握手请求时(具体说来,是客户端发出SSL请求中的ClientHello阶段)就提交请求的主机名,即使同一IP地址上有多个服务器,也能快速切换到正确域名并返回正确的证书,SNI字段有助于大规模的TLS托管工作,大大节省请求时间。
升级TLS协议
2018年IESG正式批准TLS 1.3协议公布面世,它将成为客户端和服务器之间通过HTTPS连接建立加密通信的最新标准。TLS 1.3协议不仅在安全性方面得到重大提升,而且大大提升HTTPS连接的速度性能,建立TLS握手过程中,TLS 1.2协议需要2次消息往返才能建立握手,加载时间会额外增加。而对于TLS1.3来说,首次握手只需要1次消息往来,大大降低一次连接所需的消息往来耗时。对于近期访问过的站点,还可以在第一次给服务器发消息时就发送有用的数据,这就是“零消息往来”模式(0-RTT),会使网页加载变得更快!
使用ECC椭圆曲线算法SSL证书
随着新技术和计算力的提升,为了防止密钥被暴力破解,我们需要创建更强大、更安全的密钥,TLS握手过程中,更强大的密钥意味着必须来回发送更多的数据以验证连接。而ECC椭圆曲线加密算法只需要较短的密钥长度就能提供更好的安全性。例如,256位的ECC密钥加密强度等同于3072位RSA密钥的水平(目前普通使用的RSA密钥长度是2048位),较小的密钥意味着较小的证书和较少的数据来传递以建立HTTPS连接,在确保安全性的同时提升连接速度。在Apache和IIS服务器采用ECC算法,经国外有关权威机构测试,Web服务器响应时间比RSA快十几倍。
沃通CA提供ECC加密算法SSL证书,沃通超安SSL Pro 和超真SSL Pro证书都支持签发ECC加密算法证书,保护网站安全、提升性能体验,让您的网站安全与速度兼顾,特别适用于移动端互联网应用。沃通SSL证书由全球信任顶级根签发,支持Windows、安卓、iOS、JDK以及Firefox、Chrome等各类浏览器、操作系统和移动终端,具备广泛兼容性,可用于网站、APP等各类服务器部署HTTPS加密。
- 点赞
- 收藏
- 关注作者
评论(0)