我决定使用SSL加密我的整个网站,即使其中只有部分内容确实是必要的。最终结果是该网站现在有点慢。所以,我的问题是:
如果网站通常很小,速度差异是否显着?
答案 0 :(得分:3)
有几个不同的因素会影响SSL速度。
服务器负载。您将通过加密所有流量来增加服务器的CPU工作负载。但是,特别是在现代硬件上,除非流量非常高,否则不会产生明显的差异。
对称加密的密钥大小。我假设你的意思是将加密减少到128位。可能这不是整体速度的重要因素。您可以通过运行例如对openssl进openssl speed aes
。您可能会发现AES 256并不比AES 128慢。
SSL握手速度。 SSL握手在客户端和服务器之间引入了几个额外的往返,在普通HTTP中不需要。这意味着特别是在高延迟链接上,在您开始从服务器获取任何数据之前,它会更长。为了缓解这种情况,您可以做一些不同的事情:
一个。使用2048位RSA私钥。这是目前推荐的尺寸,作为安全性和速度之间的权衡。较大的密钥在客户端和服务器之间传输需要更长的时间,并且将略微增加CPU密集度。 (见openssl speed rsa2048 rsa4096
。)
湾确保您使用HTTP keepalive和SSL会话恢复。 HTTP keepalive将允许客户端重用与服务器的现有连接以进行多个请求,从而无需再次建立连接。 SSL会话恢复使客户端和服务器可以使用他们先前商定的SSL参数来更快地启动新会话,从而减少新请求所需的往返数据包数量。
当只有部分网页通过SSL提供时,获得正确的保护可能会非常棘手。您肯定希望通过HTTPS提供登录表单和发布的页面。您还应在会话cookie上设置Secure标志,否则与服务器的任何明文通信都将包含cookie并允许窃听者模拟用户的会话。
但总的来说,考虑到加密所有内容是多么容易,尝试找出需要保护的页面可能不值得。为了获得最佳安全性,您还应确保已设置Web服务器,以便它通过Qualys SSL实验室的SSL Server Test。
良好的基准测试工具可能取决于您的平台。如果您使用的是Linux,则可以尝试使用apache附带的ab
命令:http://en.wikipedia.org/wiki/ApacheBench。
答案 1 :(得分:0)
hmmmm,在研究MSIE中的性能问题时遇到了这个问题。也许信息在被答复时不可用,但是现在肯定有更好的信息。
一般的经验法则是,对于给定的算法,较大的密钥比较小的密钥更安全。令人惊讶的是它是not true for AES。 (在我写这篇文章时),AES-128比AES-256的安全性更高。
关于性能开销,使用AES-256会使带宽10-15% lower高于AES-128。我尚未找到有关延迟的任何信息,但希望AES-128在此方面明显优于AES-256。