Я путаюсь в терминах в этой области. Что такое SSL, TLS и HTTPS? Каковы различия между ними?
TLS - это новое название протокола SSL. А именно, протокол SSL дошел до версии 3.0; TLS 1.0 - это "SSL 3.1". В настоящее время определены следующие версии TLS: TLS 1.1 и 1.2. Каждая новая версия добавляет несколько функций и изменяет некоторые внутренние детали. Иногда мы говорим "SSL/TLS".
HTTPS - это HTTP-within-SSL/TLS. SSL (TLS) устанавливает защищенный двунаправленный туннель для произвольных двоичных данных между двумя хостами. HTTP - это протокол для отправки запросов и получения ответов, каждый запрос и ответ состоят из подробных заголовков и (возможно) некоторого содержимого. HTTP предназначен для работы через двунаправленный туннель для произвольных двоичных данных; когда этот туннель представляет собой соединение SSL/TLS, то все это называется "HTTPS".
Чтобы объяснить аббревиатуры:
SSL и TLS - это протоколы, направленные на обеспечение конфиденциальности и целостности данных между двумя сторонами (см. RFC 2246), разработанные для работы поверх надежного протокола связи (обычно TCP). Хотя спецификация TLS не говорит о сокетах, дизайн SSL/TLS был разработан таким образом, чтобы приложения могли использовать их почти как традиционные TCP-сокеты, например, SSLSocket
в Java расширяет Socket
(есть небольшие различия в плане удобства использования).
HTTPS - это HTTP через SSL/TLS, где сначала устанавливается SSL/TLS соединение, а затем происходит обмен обычными HTTP данными через это SSL/TLS соединение.
Используете ли вы для этого SSL или TLS, зависит от конфигурации вашего браузера и сервера (обычно есть возможность разрешить SSLv2, SSLv3 или TLS 1.x).
Подробности о том, как HTTP и SSL/TLS образуют HTTPS, приведены в RFC 2818.
Что касается разницы между SSL и TLS, вас могут заинтересовать эти два ответа, которые я написал на похожие вопросы на StackOverflow и ServerFault:
Вы можете рассматривать TLSv1.0 как SSLv3.1 (на самом деле именно это и происходит внутри записей, которыми обмениваются). Просто проще сравнивать TLSv1.0. с TLSv1.1 и TLSv1.2, потому что все они были отредактированы в рамках IETF. и следуют более или менее одинаковой структуре. SSLv3 редактируется другим учреждением (Netscape), это делает его немного более сложным. обнаружить различия.
Вот несколько отличий, но я сомневаюсь, что смогу перечислить их все:
- В сообщении ClientHello (первое сообщение, отправляемое клиентом, чтобы инициировать рукопожатие), версия {3,0} для SSLv3, {3,1} для TLSv1.0 и {3,2} для TLSv1.1.
- Обмен ключами клиента отличается.
- Различается MAC/HMAC (TLS использует HMAC, в то время как SSL использует более раннюю версию HMAC).
- Отличается деривация ключа.
- Клиент может отправлять данные приложения сразу после отправки сообщения SSL/TLS Finished в SSLv3. В TLSv1 он должен ждать для получения сообщения Finished от сервера.
- Список наборов шифров отличается (и некоторые из них были переименованы из SSL* в TLS*, сохранив тот же идентификационный номер).
- Также есть различия относительно нового расширения повторного согласования. В целом, чем выше версия SSL/TLS, тем она безопаснее, при условии, что вы правильно выбираете наборы шифров (более высокие версии TLS также предлагают использование наборов шифров, которые считаются более совершенными). (SSLv2 считается небезопасным.) Кроме того, SSL не входит в сферу действия IETF. Например, исправление TLS renegotiation fix пришлось модернизировать для SSLv3 (хотя стеки SSL/TLS все равно пришлось обновить). Возможно, вас также заинтересует этот ответ:
STARTTLS
в LDAP/SMTP). Это описано в RFC 2817. Насколько я знаю, это почти никогда не используется (и это не то, что используется https://
в браузерах). Основная часть RFC - это раздел о CONNECT
для HTTP прокси-серверов (он используется HTTP прокси-серверами для ретрансляции HTTPS-соединений).Термины SSL и TLS часто используются как взаимозаменяемые или в сочетании друг с другом (TLS/SSL), но на самом деле один из них является предшественником другого - SSL 3.0 послужил основой для TLS 1.0, который в результате иногда называют SSL 3.1.
С точки зрения безопасности они оба считаются одинаково защищенными
Основное различие заключается в том, что если SSL-соединения начинаются с обеспечения безопасности и переходят непосредственно к защищенному обмену данными, то TLS-соединения начинаются с небезопасного "приветствия" серверу и переходят к защищенному обмену данными только после успешного рукопожатия между клиентом и сервером. Если по какой-либо причине рукопожатие TLS не удается, соединение никогда не создается.
Протокол HTTP используется для запроса и получения данных, а https, в котором 's' - это не что иное, как безопасный SSL, который делает запрос и получение данных по протоколу http зашифрованными, так что ни один злоумышленник не сможет легко получить данные.
то ваше соединение с веб-сервером будет незашифрованным, все данные будут отправляться в открытом виде, и любой злоумышленник может получить и просмотреть эти данные.
Ну, оба варианта одинаковы, но TLS более расширяем и надеется получить больше поддержки в будущем. и TLS имеет обратную совместимость.