Java Server,TLSv1.1快,TLSv1.2极慢(90MByte / sec对4MByte / sec)

时间:2015-04-11 12:20:29

标签: java performance ssl https

测试之间的唯一变化是更改TLS版本。 Chrome和FireFox之间的行为是相同的。

TLSv1和TLSv1.1均达到90兆字节/秒。他们在Java 6(TLSv1)和Java 8(TLSv1 / TLSv1.1)上获得了这种速度。

但是,TLSv1.2会大幅降低速度。我们得到4兆字节/秒。没有更改密码,没有其他设置等。不仅我们的开发机器,但客户报告了同样的事情,Windows操作系统,Java 8,TLSv1.2。我们使用的是OS X,Java 8,TLSv1.2。所以这似乎是大势所趋。测试正在localhost,Xeon 6核心处理器,SSD驱动器上完成。如果我们不使用HTTPS,我们会超过200MB /秒。所以4MB /秒对我们能做的事情只是一种可怕的侮辱。

这不是初始连接,缓存或重新协商等。这只是原始传输速度。我没有找到任何已知的java错误,有没有人有任何猜测?

这是Chrome针对连接和密码报告的内容:

TLSv1.2工作

您与127.0.0.1的连接已使用现代加密技术加密。

连接使用TLS 1.2。

使用AES_128_GCM对连接进行加密和身份验证,并使用ECDHE_RSA作为密钥交换机制。

TLSv1.1

您与127.0.0.1的连接是使用过时的加密技术加密的。

连接使用TLS 1.1。

使用AES_128_CBC加密连接,SHA1用于消息验证,ECDHE_RSA用作密钥交换机制。

想法?

1 个答案:

答案 0 :(得分:3)

讨厌回答我自己的问题,但我刚刚意识到TLS v1.2允许使用更新的密码。它是使Java 8使用软件来处理加密方面而不是使用硬件加速的密码,并导致可怕的速度。

禁用服务器上的所有GCM密码导致与使用CBC密码的chrome相同的速度。

Slow AES GCM encryption and decryption with Java 8u20

- 本