Что такое SSL и с чем его кушать


download

SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол. Предназначен для шифрования данных при обмене информацией между сетевыми устройствами. SSL изначально разработан компанией Netscape Communications для добавления протокола HTTPS в свой веб-браузер Netscape Navigator. Впоследствии, на основании протокола SSL 3.0 был разработан и принят стандарт RFC, получивший имя TLS.

Больше материалов доступно в статье на википедии. Не буду вдаваться во все подробности, но опишу как можно проще его применение по отношению к вэб-сайтам.

Итак, частое использование протокола SSL привело к формированию протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего шифрование. Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивая защиту этих данных. Такой способ защиты широко используется в мире Веб для приложений, в которых важна безопасность соединения, например в платёжных системах. HTTPS по умолчанию использует TCP-порт 443.

Рассматривая ssl соединение нужно понимать что такое приватный или серверный ключ или server private key, запрос подписи сертификата или CSR (Certificate Signing request), публичный ключ (public key), сертификат безопасности или Security Certificate, шифр, cipher или алгоритм шифрования, центр сертификации или Certification Authority.

Приватный или серверный ключ - начало жизни любого сертфиката. Это текстовый файл который содержит в себе набор непонятных символов, напоминающих абракадабру. Эта абракадабра является ключем на основе которого происходит шифрование исходящих и дешифровка входящих данных на стороне сервера. На основе этого файла-ключа генерируется запрос подписи сертификата или CSR (Certificate Signing request).

Запрос подписи сертификата или CSR - такая же закодированая абракадабра как и ключ. Эта абракадабра генерируется на основе серверного ключа и содержит информацию которая будет включена в сертификат. Это информация о вашей организации (organization name), имя вэб сайта, на котором будет установлен сертификат (common name), структурное подразделение организации (organizational unit), место нахождения или город (locality) и страна (country). Все эти вопросы задаются генератором на этапе создания запроса. Также он содержит публичный ключь (public key) который тоже будет включен в сертификат.

Центр сертификации или Certification Authority - сторона (отдел, организация), чья честность неоспорима, а открытый ключ широко известен. Задача центра сертификации — подтверждать подлинность ключей шифрования с помощью сертификатов электронной подписи. Другими словами - это контора которой доверяют все производители браузеров. Именно туда направляется CSR для того что бы ваш сайт проверили на подлинность, принадлежность Вам и за определенные деньги на основе своего ключа и Вашего CSRа сделали Вам сертификат безопасности.

Сертификат безопасности - опять же абракадабра потому что зашифрованный файл, который содержит информацию о Вашей организации, вэб-сайте и все то, что было указано на этапе генерации CSR. Также подлинный сертификат безопасности содержит подпись Центра сертификации о том, что его проверили и подтвердили, что вы - это вы, ваш вэб-сайт - тот за кого себя выдает и с ним можно дружить. Если такой сертификат прикручен к сайту, по при обращении к нему по протоколу https начало адресной строки превратится в приятную зеленку и браузер будет считать такое соединение безопасным и очень положительным во всех отношениях.

 

Screenshot from 2013-11-19 11:22:47

 

 

Отдельно нужно упомянуть самоподписанный сертификат - это такой же сертификат безопасности, как и предыдущий с одним важным минусом: в нем не содержится цифровой подписи центра сертификации. Обычно при обращении к таким сайтам экран становится красным и браузер настойчиво рекомендует отказаться от установления защищенного соединения с сервером.

 

 

Что же происходит, когда мы делаем обращение к серверу использую https вместо http?
SSL клиент и сервер договариваются об установлении связи с помощью процедуры рукопожатия или HandShake. Во время рукопожатия клиент и сервер договариваются о том как они будут обеспечивать безопасную передачу данных:

1. Клиент посылает серверу номер версии SSL клиента, зашифрованные параметры чтобы общаться с клиентом, используя SSL.
2. Сервер делает то же самое. Сервер также посылает свой ​​сертификат, который требует проверки подлинности клиента. После идентификации сервер запрашивает сертификат клиента.
3. Клиент использует информацию, переданную сервером для проверки подлинности. Если сервер не может быть проверен, пользователь получает предупреждение о проблеме и о том, что шифрование и аутентификация соединения не может быть установлена. Если сервер успешно прошел проверку, то клиент переходит к следующему шагу.
4. Используя все данные, полученные до сих пор от процедуры рукопожатия, клиент (в сотрудничестве с сервером) создает предварительный секрет сессии, в зависимости от используемого шифра от сервера, шифрует его с помощью открытого ключа сервера (полученного из сертификата сервера , отправленного на 2-м шаге), а затем отправляет его на сервер.
5. Сервер пытается аутентифицировать клиента. Если клиент не может пройти проверку подлинности, сеанс заканчивается. Если клиент может быть успешно аутентифицирован, сервер использует свой ​​закрытый ключ для расшифровки предварительного секрета, а затем создается главный секрет на сервере и на клиенте.
6. И клиент, и сервер используют секрет для генерации ключей сеансов, которые являются симметричными ключами, использующимися для шифрования и расшифрования информации, которой обмениваются во время SSL сессии.
7. Клиент посылает сообщение серверу, информируя его, что будущие сообщения от клиента будут зашифрованы с помощью ключа сеанса. Затем он отправляет отдельное, зашифрованное сообщение о том, что часть рукопожатие закончена.
8. И в заключение, сервер посылает сообщение клиенту, информируя его, что будущие сообщения от сервера будут зашифрованы с помощью ключа сеанса. Затем он отправляет отдельное, зашифрованное сообщение о том, что часть рукопожатие закончена.

На этом рукопожатие завершается, и начинается защищенное соединение, которое зашифровывается и расшифровывается с помощью ключевых данных.

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

Ясное дело, что главным преимуществом является первый пункт.

Есть и вторая сторона медали. К недостаткам использования ssl можно отнести:
- деньги. Да за сертификаты нужно платить конторам, которые называются центрами сертификации. Очень уважаемые центры сертификации берут очень неплохие деньги за то, что подписывают Ваш сертификат.
- опять деньги? Да. Https соединения более прожорливы в плане ресурсов системы. Может потребоваться более мощный сервер. Именно поэтому не рекомендуется использовать https для всего вэб сайта.

Если интересно, можно почитать про:

Первые несколько миллисекунд HTTPS соединения
SSL wikipedia
SslShopper FAQs
Центр сертификации wikipedia

Share Button
(Visited 278 times, 1 visits today)

Один комментарий на «“Что такое SSL и с чем его кушать”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *