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
   76   77   78   79   80   81   82   83   84   85   86