我们与同事讨论了https通信中SSL会话的生命周期。
当我使用普通浏览器与服务器建立https连接时,底层ssl使用非对称加密创建会话(包括共享密钥),其余通信使用(更快)对称加密进行加密。
问题是:在对同一服务器的后续https请求(单击链接)上,是否再次使用旧的ssl会话,避免了非对称加密的开销以建立会话密钥?或者是一个新的非对称加密的ssl握手,用于建立必要的ssl会话?
或者换句话说:SSL会话在https请求之间是否保持活动状态,还是在https请求结束时结束?
由于我们在这里有一堆挑剔,因此对某些授权来源的引用会被贬低。
答案 0 :(得分:10)
使用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
答案 1 :(得分:4)
请参阅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
答案 2 :(得分:3)
如果您的浏览器支持会话恢复并且服务器已缓存会话,那么您可以在连接之间继续会话,GNUTLS支持此功能,您可以在此处看到演示: