2016-06-14 2 views
3

Я пытаюсь понять сеанс и хочу понимать следующее:Session vs ssl session

В чем разница между сеансом http и сеансом SSL?

При каких обстоятельствах они созданы?

+0

При использовании SSL в веб-контексте вы говорите о https в большинстве случаев. Таким образом, сеанс «SSL» в основном такой же, как сеанс «http» - у вас может быть только два сеанса в зависимости от того, используете ли вы URL через http или https (например, cookie может иметь флаг «secureOnly», что означает он передается только через https, и если вы используете этот файл cookie для хранения идентификатора сеанса, вы используете этот сеанс только при использовании https). – Thomas

+0

Спасибо за ваш ответ. Если сеанс не существует, создается ли сеанс SSL, созданный контейнером (т.е. tomcat) автоматически при переходе с http на https, не предполагая, что сервлет-вызов request.getSession()? – DannyR

+0

Это может зависеть от конфигурации (я не очень хорошо знаю Tomcat). – Thomas

ответ

5

HTTP-сессия существует, если один и тот же клиент и сервер имеют цепочку, охватывающую несколько запросов и ответов. Во время этого разговора они поддерживают состояние, например, что пользователь зарегистрирован или подобен. Это состояние обычно поддерживается с помощью cookie, который все время обменивается.

сеанс SSL/TLS аналогичен, только если он не находится на уровне HTTP, и состояние не отражает зарегистрированного пользователя. Вместо этого состояние сеанса TLS включает в себя ключ шифрования и используемый шифр и т. Д. Это состояние отражается так же, как и в HTTP: где у вас есть файл cookie в HTTP, который у вас есть в TLS, токен сеанса или идентификатор сеанса.

В HTTP-сеансе часто используется для сохранения авторизованного состояния, то есть пользователь регистрируется один раз и может выполнять несколько действий во время входа в систему. Таким образом, он используется для уменьшения накладных расходов при входе в систему снова и снова. В SSL/TLS сеанс создается по той же причине: уменьшить накладные расходы на подтверждение TLS. Если сеанс TLS не существует, будет выполнено полное рукопожатие. В этом рукопожатии сервер будет проверять личность, отправив сертификат, а шифры и ключ будут обменены. Если вместо этого сеанс будет использоваться повторно, будет сделано менее дорогое короткое рукопожатие, так как клиент и сервер просто продолжают использовать тот же ключ и шифр, и подтверждение личности остается в силе.

Сеанс SSL/TLS и сеанс HTTP независимы, то есть может быть перекрытие или не может быть перекрытия, но это вообще не имеет значения.

+0

Спасибо за ваш ответ, поэтому, когда веб-приложение перемещается с http на https, сеанс http по-прежнему используется для поддержания состояния входа и т. Д.? И если я не создаю сеанс в сервлете или jsp, пользователь должен будет зайти на каждую защищенную страницу? – DannyR

+0

HTTPS - это просто HTTP через TLS. Если ваш код явно не предназначен для работы только с простым HTTP, вам не нужно ничего делать, чтобы продолжать использовать сеанс HTTP с помощью HTTPS. –

+0

Спасибо за ваш ответ. Только последний вопрос. Теперь я понимаю, что когда вы переходите с http на https, http-сеанс по-прежнему используется для поддержания состояния входа и т. Д. SSL-сеанс для этой цели не используется. Это верно? – DannyR