Page 81 - Web性能权威指南
P. 81
• 万一证书有错误,则显示错误消息,用户不能回避警告;
• max-age 以秒为单位指定 HSTS 规则集的生存时间(例如,max-age=31536000 等于
缓存 365 天);
• 用户代理可以根据指令在指定的证书链中记住(“印下”)某主机的指纹,以便将
来访问时使用,从而有效限制证书颁发机构在特定时间(由 max-age 指定)内可
颁发证书的范围。(这一项是可选的。)
事实上,HSTS 会把原始服务器转换为只处理 HTTPS 的目标服务器,从而确保应用
不会因各种主动或被动攻击给用户造成损失。从性能角度说,HSTS 通过把责任转
移到客户端,让客户端自动把所有链接重写为 HTTPS,消除了从 HTTP 到 HTTPS
的重定向损失。
到 2013 年初,支持 HSTS 的浏览器有 Firefox 4+、Chrome 4+、Opera 12+
和 Android 平台的 Chrome 和 Firefox。要了解最新的支持情况,请访问:
http://caniuse.com/stricttransportsecurity。
4.8 性能检查清单
作为应用开发人员,事实上你接触不到 TLS 的这些复杂性。只要别把页面中的
HTTP 和 HTTPS 内容混为一谈,那你的应用就可以在这两种情况下都顺畅运行。然
而,应用的整体性能却会受到服务器底层配置的影响。
好在,只要想到优化,任何时候都不算晚。而且一旦优化到位,所有与服务器的新
连接都将受益无穷!下面是一个简单的检查清单:
• 要最大限制提升 TCP 性能,请参考 2.5 节“针对 TCP 的优化建议”;
• 把 TLS 库升级到最新版本,在此基础上构建(或重新构建)服务器;
• 启用并配置会话缓存和无状态恢复;
• 监控会话缓存的使用情况并作出相应调整;
• 在接近用户的地方完成 TLS 会话,尽量减少往返延迟;
• 配置 TLS 记录大小,使其恰好能封装在一个 TCP 段内;
• 确保证书链不会超过拥塞窗口的大小;
• 从信任链中去掉不必要的证书,减少链条层次;
• 禁用服务器的 TLS 压缩功能;
• 启用服务器对 SNI 的支持;
• 启用服务器的 OCSP 封套功能;
• 追加 HTTP 严格传输安全首部。
传输层安全(TLS) | 63