如何全方位打造安全高效的HTTPS站点(二)
如何全方位打造安全高效的HTTPS站点(二)
前文中我讲到了从http升级到https后安全性有了基本的保障,但是如果性能受到影响,肯定会影响用户的体验。之前看阿里巴巴技术保障部技术专家李振宇介绍,阿里电商在启用全站HTTPS后,性能不降反升,用户访问网站和移动端更为流畅。今天我们接着来看如何提升https站点的性能。
一、不要过度安全
在建立安全连接时,握手协商的过程中需要进行加密运算。在前面在介绍密钥的时候提到过,一般来说,密钥的位数越多,安全性越高。由于其运算复杂度提升,也更耗费的CPU资源,性能也会降低。密钥太短会不安全,密钥太长会影响性能。对于大多数网站,如果使用大于2048位的RSA秘钥或256位的ECDSA密钥则有可能影响用户的体验。这个道理相信大家都很好理解,用论语里面的四个字概括是恰到好处---过犹不及。
二、使用会话恢复
会话恢复也是一种性能优化技术,可以节省重新握手带来的一系列开销。并且在一段时间内可以重复使用。开启会话恢复机制会显著的提升你的性能。会话恢复机制有两种,一种是基于 session ID的会话恢复,还有一种是基于 session ticket的会话恢复。基于session ID的会话恢复有一个缺点,往往session ID只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。而session ticket这种机制就很好的解决了这个问题。有需要的朋友可以进一步学习了解。
三、数据缓存
我们知道浏览器会在我们请求过的站点资源进行缓存(如html页面,图片资源,JS数据等)。当下一个请求到来的时候,如果是相同的URL,浏览器会根据缓存机制来决定是直接使用缓存的副本响应,还是向源服务器再次发起请求。所以在web端返回数据的时候需要配置正确的消息响应头。在web页面也可以使用相关的标签。对公共数据进行缓存。这样可以充分节省网络开销,提高站点的性能。
四、支持HTTP / 2
相比于 HTTP/1.1,HTTP/2的使用大幅度提高了网页的性能。在http/1.1中,网络延迟问题主要由于队头阻塞(Head-Of-Line Blocking),导致带宽无法被充分利用。其次,在HTTP/1.1协议中的heeader 信息中一般会包含如( Cookie, User Agent,host等信息),而这些信息基本是固定的, 相同的在通信中反复传输对性能是有一定的影响。而且,HTTP/1.1使用的纯文本形式的报文传输。所以在传输中也会增加网络成本。这些问题在HTTP/2协议中不复存在。HTTP/2协议则采用了二进制分帧层 (Binary Framing Layer),使用二进制进行传输。并且使用Header压缩,和多路复用等技术。大大的提升了传输速度和效率。所以,支持HTTP/2协议是提升性能的重要举措。
五、使用OCSP Stapling
OCSP是用来实时检查证书吊销状态的协议。 OCSP Stapling将证书的状态请求一起嵌入到TLS握手中。所以,客户端不需要在额外的进行OCSP查询和验证,从而节省了时间,提高了用户体验。 虽然OCSP Stapling是一项很重要的优化技术,但是需要提醒的是,并非所有Web服务器都提供可靠的OCSP stapling的支持。所以在进行配置的时候需要进行模拟验证和测试。
六、使用硬件加速
除了上面提到的提高性能的方式外,使用硬件加速也是一个很好的手段。熟悉密码行业的朋友一定听说过AES-NI指令集(或称英特尔高级加密标准新指令,简称AES-NI),主要用于Inter 和AMD微处理器。该指令集的目的是改进应用程序使用高级加密标准(AES)执行加密和解密的速度 。所以,在进行web站点配置时,建议优先配置支持硬件加速的加密套件。部署的服务器也尽可能使用支持硬件加速的CPU。
七、配置HSTS
现在很多安全的站点都是全站https, 很多服务端通过配置302跳转http的请求,这样的方式会带来两方面的影响:
1、不安全,302 跳转不仅暴露了用户的访问站点,也很容易被 MITM攻击,攻击者可从来不会讲武德。
2、降低访问速度,302 跳转不仅需要一个 RTT,浏览器执行跳转也需要执行时间。
通过开启HSTS(HTTP Strict Transport Security)功能,可以强制客户端(例如:浏览器)使用HTTPS与服务器创建连接,降低第一次访问请求被拦截的风险。HSTS包含在HTTP的协议头 Strict-Transport-Security 中,在服务器返回资源时添加。
八、证书优化
前我们也介绍了ECC算法的优越性,所以使用 ECDSA签名的证书,服务端的性能会更好一些。
以上几点可以从各个不同的方面提高https站点的性能,供大家参考。当然,虽然题目中说的是全方位打造,但安全的保障和性能的提升远不及此。将安全、兼容和效率做到极致才是我们的追求。看到这里,这篇文章的基本内容都已经介绍完了。记得上学考试的时候经常会遇到附加题,为了拓展大家的知识面,让更多的读者,不虚此行。末尾再给大家附加介绍两个与HTTPS相关的彩蛋。
附加一、CSP
CSP(内容安全策略) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 XSS 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。CSP 被设计成完全向后兼容。不支持CSP的浏览器也能与实现了CSP的服务器正常合作,反之亦然:不支持 CSP 的浏览器只会忽略它,如常运行,默认为网页内容使用标准的同源策略。如果网站不提供 CSP 头部,浏览器也使用标准的同源策略。
附加二 、CAA
全称 Certificate Authority Authorization,即证书颁发机构授权, 详见(RFC6844)。目的是减少证书意外错误发布的风险。通过DNS机制创建CAA资源记录,指定一个或多个CA机构颁有权为改域名颁发证书。从此,改变了任意CA都可以为任意域名颁发证书的历史。
参考链接:
https://www.rfc-editor.org/rfc/rfc6844.html
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP