如何减少网站的ssl时间

时间:2016-04-17 03:09:24

标签: performance amazon-web-services ssl https web

我有一个HTTPS网站,我想减少这个网站的SSL时间。 SSL证书已安装在AWS ELB上。

如果我从荷兰访问该网站,则SSL时间很长,但如果我从其他国家/地区访问同一网站,则SSL时间很短。那是为什么?

我基本上试图最小化此页面中显示的时间

http://tools.pingdom.com/fpt/#!/ed9oYJ/https://www.google.com/index.html

3 个答案:

答案 0 :(得分:16)

许多因素会影响SSL时间,包括:

基础设施(这不会影响SSL,但所有网络流量):

  • 标准网络问题(服务器与客户端的距离,网络之间的速度等等),因为SSL / TLS握手需要多次往返。除了更改托管服务提供商和/或使用CDN之外,您几乎无法控制这些内容。根据我的经验,AWS是快速的,您只是要求改进SSL而不是一般的访问时间,所以现在可以跳过这个。
  • 服务器响应时间。服务器是否处于CPU,Ram或磁盘的供电状态?你是分享这个主人吗?再一般的问题也许可以跳过这个,但SSL / TLS确实需要一些处理能力,现代服务器现在几乎不会引人注意。
  • 服务器操作系统。越新越好。因此,如果运行Red Hat Linux 4,那么期望它比最新的Red Hat Linux 7慢得多,改进的网络堆栈和更新版本的关键软件如​​OpenSSL。

设置SSL(通过https://www.ssllabs.com/ssltest运行您的网站,您应该获得健康状况):

  • 使用密码。有较旧和较慢的密码,更快和新的密码。这里可以很快变得复杂,但一般来说你应该为大多数客户寻找ECDHE密码(并且更喜欢ECDHE ... GCM)并且想要指定应该使用服务器顺序,这样你就可以选择使用的密码而不是客户端
  • 使用的证书。您需要RSA 2048证书。更多的是过度和缓慢。一些站点(以及一些扫描工具)选择RSA 4096证书,但这些证书对速度有明显的影响而没有真正增加安全性(此时 - 可能会发生变化)。有更新的ECDSA证书(通常在ssllabs报告中显示为256 EC证书)但这些更快的ECDSA证书并非由所有CA提供,并且并非所有客户都普遍支持,因此旧硬件和软件上的访问者可能无法连接他们。 Apache(and very recently Nginx from v 1.11.0)支持双重证书,以获得两个方面的优势,但代价是有两个证书,并且设置起来很复杂。
  • 证书链。您需要一个简短的证书链(理想的3证书长度:您的服务器,中介和CA根证书)。您的服务器应该返回除最后一个证书之外的所有证书(已经在浏览器证书库中)。如果缺少任何链条,某些浏览器会尝试查看沉思的链条,但这需要时间。
  • 可靠的证书提供商。除了较短的证书链,更好的OCSP响应者,他们的中介通常也会缓存在用户浏览器中,因为它们很可能被其他网站使用。
  • OCSP Stapling使用OCSP或CRL保存网络旅行以检查证书是否有效。打开它不会对Chrome产生影响,因为它们不检查撤销(大多数情况下会检查EV证书)。它可以对IE产生显着的差异,所以如果你的服务器支持它们应该打开但是要注意一些implementation issues - 特别是nginx的第一个请求在重启后总是在OCSP Stapling打开时失败。
  • 对于较旧的客户端应使用TLSv1.2,可能使用TLSv1.0,但不使用SSLv2和SSLv3。 TLSv1.1有点毫无意义(几乎所有支持它的人都支持更新更好的TLSv1.2)。 TLSv1.3目前正在开发中并且有一些良好的性能改进,但还没有完全标准化,因为存在一些已知的兼容性问题。希望这些将很快得到解决,以便可以使用。注意PCI合规性(如果您的网站上使用信用卡)要求在新网站上以及2018年6月30日之前在所有网站上使用TLSv1.2或更高版本。

重复访问 - 虽然上面的内容有助于初始连接,但大多数网站都需要下载多个资源,而且设置不当可能每次都需要完成整个握手(如果您重复看到这一点,这一点应该很明显运行webpagetest.org之类的每个请求的SSL连接设置:)

  • 应该打开HTTP Keep-Alives,以便在每个HTTP请求之后不会删除连接(这应该是HTTP / 1.1实现的默认设置)。
  • 我认为SSL缓存和门票应该是开启的。有些人不同意some obscure security reasons that should be fixed in TLSv1.3,但出于性能原因他们应该继续。具有高度敏感信息的站点可能会选择更完整的安全性而不是性能,但在我看来,安全问题的开发非常复杂,性能提升也很明显。
  • 应考虑HTTP / 2,因为它只打开一个连接(因此只设置一个SSL / TLS)并且还有其他性能改进。

我真的需要知道您的网站,看看哪些可以改进(如果有的话)。如果不愿意这样做,那么我建议你进行ssllabs测试,并向你提出的任何你不理解的事情寻求帮助,因为它需要很多详细的知识才能理解。

如果有帮助,我会运行一个个人博客,详细解释其中的一些概念:https://www.tunetheweb.com/security/https/

答案 1 :(得分:1)

您可以尝试使用ECDSA证书:https://scotthelme.co.uk/ecdsa-certificates/

但https的成本仅在第一次请求时可见:会话票证可以避免所有其他请求的成本。他们被激活了吗? (你可以用ssllabs.com查看)

如果你能使用SPDY或http2,它也可以提高速度。

ECDSA密钥,SPDY和http2减少了必要的往返次数,因此它应该减少两个位置之间的差异。

答案 2 :(得分:0)

你说你使用CDN,但我相信你应该。这就是原因:

通过TLS / SSL连接涉及握手安全连接,这需要在任何数据开始流动之前客户端和服务器之间进行额外通信。 This link has a handy diagram of the SSL handshakethis link explains the first few milliseconds of an HTTPS connection

Jordan Sissel wrote about his experiences with SSL handshake latency

  

我开始调查HTTP和HTTPS之间类似请求的延迟差异。   ...   一切都在握手中。   ...   关键是,无论您的SSL加速器(硬件负载均衡器等)有多快,如果您的SSL端点不在用户附近,那么您的第一次连接将会很慢。

如果您使用CDN,则可以在客户端和最近的边缘位置之间进行握手,从而显着改善延迟。