2016-06-14 69 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