2016-06-14 85 views
3

我想了解会话并希望了解以下内容:会话vs SSL会话

http会话和SSL会话之间的区别是什么?

在什么情况下他们创建?

+0

在Web上下文中使用SSL时,在大多数情况下您都在讨论https。因此,“SSL”会话基本上与“http”会话相同 - 根据您是通过http还是https访问URL,您可能只有两个会话(例如,Cookie可能有一个“secureOnly”标志,这意味着它只能通过https传输,如果您使用该cookie来存储会话ID,则只能在使用https时使用该会话)。 – Thomas

+0

感谢您的回复。如果没有会话存在,当从http转换为https时,由容器(即tomcat)自动创建的SSL会话假设没有servlet调用request.getSession()? – DannyR

+0

这可能取决于配置(我不太了解Tomcat)。 – Thomas

回答

5

如果同一客户端和服务器的对话跨越多个请求和响应,则存在HTTP会话。在此对话期间,他们保持一种状态,就像特定用户已登录或类似。这种状态通常是在cookie一直保持交换的情况下维护的。

SSL/TLS会话是相似的,只是它不在HTTP级别并且状态不反映登录用户。相反,TLS会话的状态包括加密密钥和使用的密码等。此状态与HTTP中的类似方式反映:您在HTTP中拥有TLS中的会话令牌或会话标识。

在HTTP中,会话通常用于保持授权状态,即用户登录一次,并且可以在保持登录状态时执行多个操作。因此,它用于减少一次又一次登录的开销。在SSL/TLS中,会话是由于类似原因而创建的:减少TLS握手的开销。如果不存在TLS会话,则完成握手。在这个握手中,服务器将通过发送证书来证明身份,密钥和密钥将被交换。如果一个会话被重用,一个更便宜的短握手将被完成,因为客户端和服务器只是继续使用相同的密钥和密码,并且身份证明仍然有效。

SSL/TLS会话和HTTP会话是独立的,即可以有重叠或者可以不重叠,但根本不重要。

+0

感谢您的回复,所以当一个Web应用程序从http移动到https时,http会话仍然用于维护登录状态等。如果我没有在servlet或jsp中创建会话,用户将不得不登录到每个安全页面? – DannyR

+0

HTTPS只是通过TLS的HTTP。除非您的代码被明确设计为仅使用普通HTTP进行工作,否则不需要做任何事情来继续使用HTTPS的HTTP会话。 –

+0

感谢您的回复。只是最后一个问题。我现在的理解是,当你从http移动到https时,http会话仍然用于维护登录状态等。SSL会话不用于此目的。它是否正确? – DannyR