mar*_*sds 2 performance ssl https tls apache-2.4
我们正在运行具有 Xeon CPU、32GB RAM 和运行 Centos 6 的 RAID SSD 的相当强大的专用服务器。然而,我们仍然看到 HTTPS 使我们的页面下载时间增加了 100 毫秒以上。有什么我们可以做的甚至可以加快 20 毫秒的速度吗?
以下是 Apache 设置:
SSLHonorCipherOrder on
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-EC$
SSLProxyCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECD$
SSLProtocol all -SSLv3 -SSLv2
SSLProxyProtocol all -SSLv3 -SSLv2
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/var/run/ssl_scache(5120000)"
SSLSessionCacheTimeout 300
SSLUseStapling On
SSLStaplingCache "shmcb:/var/run/ssl_stapling(128000)"
SSLStaplingReturnResponderErrors off
SSLStaplingStandardCacheTimeout 3600
SSLStaplingErrorCacheTimeout 600
SSLStaplingResponderTimeout 5
Run Code Online (Sandbox Code Playgroud)
尽管有相反的说法,HTTPS 确实会减慢您的网站速度。这是因为客户端和服务器需要在开始之前协商 SSL/TLS 密码。然而,在那之后,对于大多数站点来说,放缓是可以忽略不计的,而且 SSL 有巨大的好处。
此外,默认值为 http,因此为仅限 https 的站点输入该地址的人需要重定向到 https 版本,从而导致另一次往返。
对于初始连接来说,100 毫秒实际上并没有那么糟糕,正如我所说,在此之后将建立连接,因此不会有减速。首先,虽然初始连接速度很重要,但浏览站点也非常重要,在这里您不应受到 100 毫秒减速的影响。
您的 SSL/TLS 配置实际上在安全性和性能方面看起来都不错。您正在使用现代和快速的密码和套件(尽管您的密码套件仅对新浏览器有很大的限制,如果这是故意的,那么您也可以关闭 TLSv1 和 TLSv1.1),设置 SSL 缓存(以保存客户端为每个连接重新协商 SSL 会话)和 SSL Stapling 设置(为客户端节省额外的查找以检查您的证书的有效性)。
但是,我可以建议的一些内容如下。这些可能会减少使用 https 的影响,但不会减少最初的 100 毫秒连接延迟:
确保服务器的 Keep-Alives 已打开(默认情况下应该打开,但最好仔细检查)。您应该确保在响应中没有看到“Connection: close”标头。没有 Keep-Alives,您的 SSLCache 毫无意义。
将 SSLSessionCacheTimeout 从 300 秒或 5 分钟增加。如果在您的网站上浏览,您可以轻松地走出去。您已经限制了 SSLSessionCache 的大小,因此将此超时增加到更高的值没有任何害处。
实施 HSTS 以告诉浏览器您的站点始终首选 https(即使用户在浏览器地址栏中未输入任何协议 - 或者即使他们输入了 http)。这将保存初始重定向。
HTTP/2 将有助于提高 https 连接速度,因为您不再为此使用并行连接,但更重要的是,它将以其他方式提高性能。尽管如此,它仍然是 Apache 的实验(尽管对我来说似乎足够稳定)。
我还建议您定期通过https://www.ssllabs.com/ssltest/index.html运行您的服务器以测试您的 SSL/TLS 配置,因为随着发现新漏洞,该领域的情况不断变化。
| 归档时间: |
|
| 查看次数: |
7466 次 |
| 最近记录: |