2011-01-16 3 views
3

HTTP-протокол приложения, и базовое TCP-соединение может быть закрыто и открыто, не затрагивая приложение HTTP (кроме производительности).
Используя HTTP1.1, мы используем постоянные соединения, но сервер или клиент могут закрыть соединение в любое время.
Для безопасности HTTP использует TCP через SSL/TLS.
Я понимаю, что SSL действует так же, как приложение, по крайней мере, это то, как TCP «просматривает» SSL.
Вопрос в том, что базовый TCP-сокет закрывается в точке после установления безопасного соединения, означает ли это, что сеанс SSL становится недействительным, а стороны должны начинать с рукопожатия ssl?
Или базовое TCP-соединение не имеет отношения к сеансу TLS?HTTP-постоянное соединение и сеанс ssl

Спасибо!

ответ

3

означает ли это, что сеанс SSL становится недействительным, а стороны должны начинать с рукопожатия ssl?

Да, сеанс SSL/TLS завершен, и квитирование должно быть восстановлено. TLS включает механизмы для возобновления сеанса (все еще будут выполняться некоторые операции, но меньше, чем при полном рукопожатии), но не все приложения поддерживают его.

См. http://ietf.org/rfc/rfc2246.txt, F.1.4 для получения технических подробностей о возобновлении.

+0

@Eugene: После установления связи стороны SSL имеют информацию, необходимую для установления защищенного канала (шифрование/дешифрование), поскольку данные безопасности были обменены (алгоритмы и т. Д.). Эта часть, насколько я понимаю, кажется неактуальной для лежащих в основе tcp, которые получают зашифрованные блоки и передают их по сокету. Почему закрытие tcp, которое закрывается, аннулирует ранее согласованные сведения о безопасности ssl-сторон (клиент/сервер)? Эта часть я не понимаю. Не могли бы вы рассказать? – Cratylus

+0

@ user384706 С технической точки зрения SSL/TLS не заботится о соединении и может использоваться по UDP (в случае UDP используется модификация TLS, называемая DTLS), именованные каналы, почтовая почта и т. Д. (Мы когда-то реализовали ее над каналом связи на основе сообщений). Тем не менее, было решено, что для предотвращения определенных атак отключение базового канала автоматически также аннулирует SSL-соединение. В общем, ничто не заставляет вас это делать, если вы реализуете как клиентскую, так и серверную сторону связи, а также контролируете функции SSL (например, при использовании наших компонентов). –

+0

@Eugene: Итак, лучше ли считать сеанс TLS недействительным?Это не санкционировано каким-либо RFC или не подразумевается TLS RFC, правильно? – Cratylus

2

http://publib.boulder.ibm.com/httpserv/ihsdiag/ihs_performance.html#SSL:

SSL сеанс представляет собой логическое соединение между клиентом и сервером веба для защищенной связи. Во время установления сеанса SSL криптография с открытым ключом используется для обмена общим секретным основным ключом между клиентом и сервером, и определяются другие характеристики связи, такие как шифр. Позднее передача данных по сеансу зашифровывается и дешифруется с помощью криптографии с симметричным ключом, используя общий ключ, созданный во время установления связи SSL.

Генерация общего ключа очень интенсивен. Чтобы избежать генерации общего ключа для каждого TCP-соединения, существует возможность повторного использования одного и того же сеанса SSL для нескольких соединений. Клиент должен запросить повторное использование одного и того же сеанса SSL в последующем рукопожатии, и сервер должен иметь кешированный идентификатор сеанса SSL. Когда эти требования выполняются, квитирование для последующего TCP-соединения требует гораздо меньшего количества процессорных ядер (на 80% меньше в некоторых тестах). Все веб-браузеры в общем случае могут повторно использовать один и тот же сеанс SSL. Однако пользовательские веб-клиенты иногда не имеют необходимой поддержки.

Смежные вопросы