14

我们在同事之间就基于 https 通信的 SSL 会话的生命周期进行了积极(但友好)的讨论。

当我使用普通浏览器建立与服务器的 https 连接时,底层 ssl 使用非对称加密创建会话(包括共享密钥),其余通信使用(更快)对称加密进行加密。

问题是:在对同一服务器的后续 https 请求(单击链接)中,是否再次使用旧的 ssl 会话,避免建立会话密钥的非对称加密开销?或者是否需要新的非对称加密 ssl 握手来建立 ssl 会话?

或者换一种说法:SSL 会话是否在 https 请求之间保持活动状态,还是在 https 请求结束时结束?

由于我们在这里是一堆吹毛求疵的人,因此我们将不胜感激对某些权威来源的引用。

4

3 回答 3

12

用 Chrome 对此进行了测试:

导航到https://www.americanexpress.com。netstat 显示:

$ netstat -n -p tcp|grep 184.86.149.155
tcp4       0      0  10.177.78.58.50311     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50310     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50309     184.86.149.155.443     ESTABLISHED

在导航到网站上的其他链接时,netstat 显示:

$ netstat -n -p tcp|grep 184.86.149.155
tcp4       0      0  10.177.78.58.50311     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50310     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50309     184.86.149.155.443     ESTABLISHED

会话保持活跃。当我关闭浏览器选项卡并重新打开选项卡时,打开了另一个连接:

$ netstat -n -p tcp|grep 184.86.149.155
tcp4       0      0  10.177.78.58.50398     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50311     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50310     184.86.149.155.443     ESTABLISHED
tcp4       0      0  10.177.78.58.50309     184.86.149.155.443     ESTABLISHED

现代浏览器似乎使用与 http 相同的保持活动超时。这些超时可以在这里查看:

http://gabenell.blogspot.com/2010/11/connection-keep-alive-timeouts-for.html

于 2012-10-23T18:44:42.537 回答
5

请参阅http://www.ietf.org/rfc/rfc2818.txt的第 2.2 节和http://www.ietf.org/rfc/rfc2616.txt的第 8.1 节

本质上,当客户端保持持久连接时,应该保持 SSL 会话。

有关在流行浏览器中实现持久连接的更多信息,请参阅http://en.wikipedia.org/wiki/HTTP_persistent_connection#Use_in_web_browsers

于 2010-01-05T12:45:16.040 回答
3

If your browser supports session resuming and the server has cached the session, then you may be able to continue a session between connections, GNUTLS supports this and you can see a demo here:

https://test.gnutls.org:5556/

于 2010-01-05T13:29:42.220 回答