Http protocol over tls ssl что это

Обновлено: 07.07.2024

Поэтому мы решили, что статья с подробными объяснениями просто жизненно необходима для любого, кто только-только делает свои первые шаги в теме кибербезопасности.

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

TLS (Transport Layer Security - Протокол Защиты Транспортного Уровня) является более совершенной версией SSL. Обеспечивает конфиденциальность данных так же, как и SSL.

Так уж вышло, что эти два термина в виду своей схожести являются взаимозаменяемыми. Хотя это отчасти неверно, так как SSL-протокол является морально устаревшим, и большинство сайтов используют TLS вместо SSL. Но иногда TLS называют SSL, что называется, по старой памяти.

Целью SSL / TLS является обеспечение безопасности и надежности передачи конфиденциальной информации, включая личные данные, информацию об оплате или входе в систему.

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

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

Как работают сертификаты SSL / TLS?

Сертификаты SSL / TLS работают путем цифровой привязки криптографического ключа к идентификационной информации. Это позволяет им шифровать передаваемые данные таким образом, чтобы их не могли расшифровать третьи лица.

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

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

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

Корневой сертификат

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

Данный текст является вольным переводом вот этой главы замечательной книги «High Performance Browser Networking» авторства Ильи Григорика. Перевод выполнялся в рамках написания курсовой работы, потому очень вольный, но тем не менее будет полезен тем, кто слабо представляет что такое TLS, и с чем его едят.

Общие сведения о TLS


После того, как протокол SSL был стандартизирован IETF (Internet Engineering Task Force), он был переименован в TLS. Поэтому хотя имена SSL и TLS взаимозаменяемы, они всё-таки отличаются, так как каждое описывает другую версию протокола.

Первая выпущенная версия протокола имела название SSL 2.0, но была довольно быстра заменена на SSL 3.0 из-за обнаруженных уязвимостей. Как уже упоминалось, SSL был разработан компанией Netscape, так что в январе 1999 года IETF открыто стандартизирует его под именем TLS 1.0. Затем в апреле 2006 года была опубликована версия TLS 1.1, которая расширяла первоначальные возможности протокола и закрывала известные уязвимости. Актуальная версия протокола на данный момент – TLS 1.2, выпущенная в августе 2008 года.

Как уже говорилось, TLS был разработан для работы над TCP, однако для работы с протоколами дейтаграмм, такими как UDP (User Datagram Protocol), была разработана специальная версия TLS, получившая название DTLS (Datagram Transport Layer Security).

Шифрование, аутентификация и целостность
  • Шифрование – сокрытие информации, передаваемой от одного компьютера к другому;
  • Аутентификация – проверка авторства передаваемой информации;
  • Целостность – обнаружение подмены информации подделкой.

Также в рамках процедуры TLS Handshake имеется возможность установить подлинность личности и клиента, и сервера. Например, клиент может быть уверен, что сервер, которые предоставляет ему информацию о банковском счёте, действительно банковский сервер. И наоборот: сервер компании может быть уверен, что клиент, подключившийся к нему – именно сотрудник компании, а не стороннее лицо (данный механизм называется Chain of Trust и будет рассмотрен в соответствующем разделе).

Таким образом, кратко рассмотрены все три механизма, лежащие в основе криптобезопасности протокола TLS.

TLS Handshake


Перед тем, как начать обмен данными через TLS, клиент и сервер должны согласовать параметры соединения, а именно: версия используемого протокола, способ шифрования данных, а также проверить сертификаты, если это необходимо. Схема начала соединения называется TLS Handshake и показана на рисунке:

Обмен ключами в протоколе TLS

По различным историческим и коммерческим причинам чаще всего в TLS используется обмен ключами по алгоритму RSA: клиент генерирует симметричный ключ, подписывает его с помощью открытого ключа сервера и отправляет его на сервер. В свою очередь, на сервере ключ клиента расшифровывается с помощью закрытого ключа. После этого обмен ключами объявляется завершённым. Данный алгоритм имеет один недостаток: эта же пара отрытого и закрытого ключей используется и для аутентификации сервера. Соответственно, если злоумышленник получает доступ к закрытому ключу сервера, он может расшифровать весь сеанс связи. Более того, злоумышленник может попросту записать весь сеанс связи в зашифрованном варианте и занять расшифровкой потом, когда удастся получить закрытый ключ сервера. В то же время, обмен ключами Диффи-Хеллмана представляется более защищённым, так как установленный симметричный ключ никогда не покидает клиента или сервера и, соответственно, не может быть перехвачен злоумышленником, даже если тот знает закрытый ключ сервера. На этом основана служба снижения риска компрометации прошлых сеансов связи: для каждого нового сеанса связи создаётся новый, так называемый «временный» симметричный ключ. Соответственно, даже в худшем случае (если злоумышленнику известен закрытый ключ сервера), злоумышленник может лишь получить ключи от будущих сессий, но не расшифровать ранее записанные.

На текущий момент, все браузеры при установке соединения TLS отдают предпочтение именно сочетанию алгоритма Диффи-Хеллмана и использованию временных ключей для повышения безопасности соединения.

Следует ещё раз отметить, что шифрование с открытым ключом используется только в процедуре TLS Handshake во время первоначальной настройки соединения. После настройки туннеля в дело вступает симметричная криптография, и общение в пределах текущей сессии зашифровано именно установленными симметричными ключами. Это необходимо для увеличения быстродействия, так как криптография с открытым ключом требует значительно больше вычислительной мощности.

Возобновление сессии TLS

Как уже отмечалось ранее, полная процедура TLS Handshake является довольно длительной и дорогой с точки зрения вычислительных затрат. Поэтому была разработана процедура, которая позволяет возобновить ранее прерванное соединение на основе уже сконфигурированных данных.


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

Однако здесь имеется практическое ограничение: так как сервер должен хранить данные обо всех открытых сессиях, это приводит к проблеме с популярными ресурсами, которые одновременно запрашиваются тысячами и миллионами клиентов.

Для обхода данной проблемы был разработан механизм «Session Ticket», который устраняет необходимость сохранять данные каждого клиента на сервере. Если клиент при первоначальной установке соединения указал, что он поддерживает эту технологию, то в сервер в ходе TLS Handshake отправляет клиенту так называемый Session Ticket – параметры сессии, зашифрованные закрытым ключом сервера. При следующем возобновлении сессии, клиент вместе с ClientHello отправляет имеющийся у него Session Ticket. Таким образом, сервер избавлен от необходимости хранить данные о каждом соединении, но соединение по-прежнему безопасно, так как Session Ticket зашифрован ключом, известным только на сервере.

TLS False Start

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

Для получения ещё большего быстродействия была разработана технология TLS False Start, являющаяся опциональным расширением протокола и позволяющая отправлять данные, когда TLS Handshake завершён лишь частично. Подробная схема TLS False Start представлена на рисунке:


TLS Chain of trust


Описанное в предыдущем абзаце и есть создание «цепочки доверия» (или «Chain of trust», если по-английски).
В протоколе TLS данные цепи доверия основаны на сертификатах подлинности, предоставляемых специальными органами, называемыми центрами сертификации (CA – certificate authorities). Центры сертификации производят проверки и, если выданный сертификат скомпрометирован, то данный сертификат отзывается.

Из выданных сертификатов складывается уже рассмотренная цепочка доверия. Корнем её является так называемый “Root CA certificate” – сертификат, подписанный крупным центром, доверие к которому неоспоримо. В общем виде цепочка доверия выглядит примерно таким образом:


Естественно, возникают случаи, когда уже выданный сертификат необходимо отозвать или аннулировать (например, был скомпрометирован закрытый ключ сертификата, или была скомпрометирована вся процедура сертификации). Для этого сертификаты подлинности содержат специальные инструкции о проверке их актуальности. Следовательно, при построении цепочки доверия, необходимо проверять актуальность каждого доверительного узла.

Механизм этой проверки прост и в его основе лежит т.н. «Список отозванных сертификатов» (CRL – «Certificate Revocation List»). У каждого из центров сертификации имеется данный список, представляющий простой перечень серийных номеров отозванных сертификатов. Соответственно любой, кто хочет проверить подлинность сертификата, попросту загружает данный список и ищет в нём номер проверяемого сертификата. Если номер обнаружится – это значит, что сертификат отозван.

  • Центры сертификации должны справляться с нагрузкой в режиме реального времени;
  • Центры сертификации должны гарантировать свою доступность в любое время;
  • Из-за запросов реального времени центры сертификации получают информацию о том, какие сайты посещал каждый конкретный пользователь.

Таким образом, в данной статье рассмотрены все ключевые средства, предоставляемые протоколом TLS для защиты информации. За некоторую отсебятину в статье прошу прощения, это издержки изначальной цели выполнения перевода.

Безопасность

В общих чертах именно так и используются цифровые сертификаты и протоколы TLS и SSL. Если есть вопросы/дополнения, пишите в комментарии.

Резюмируя все вышесказанное!

SSL - слой защищённых сокетов. TLS - Протокол Защиты Транспортного Уровня. И то, и другое является показателем того, что посетителям сайта нечего бояться и они могут безопасно передавать конфиденциальную информацию владельцам сайта. И SSL, и TLS шифрует все передаваемые данные таким образом, чтобы их не могли расшифровать третьи стороны, вроде хакеров, мошенников и прочих злоумышленников.

Вы можете определить, использует ли веб-сайт протокол SSL / TLS по значку замка или зеленой полосе в верхней части браузера. Обычно вы можете щелкнуть значок, чтобы просмотреть, кому принадлежит сертификат.

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

Создание клиентского сертификата

Клиентский сертификат создается примерно так же, как серверный.

Если необходим клиентский сертификат в формате PKCS12, создаем его:

Теперь можно использовать клиентский сертификат для работы с нашим сервером.

Просмотр информации о сертификате

Содержимое сертификата можно просмотреть таким образом:

Мы видим, кто выдал этот сертификат и когда заканчивается срок его годности.

Как добавить SSL / TLS на сайт на базе WordPress?

Работа с SSL / TLS на сайтах, работающих на WordPress, значительно проще. Он предлагает плагины, такие как Really Simple SSL и SSL Insecure Content Fixer, которые выполняют всю техническую часть за Вас. Однако вам все равно нужно будет приобрести сертификат SSL у поставщика.

После того, как ваш SSL-сертификат будет приобретен и установлен, вам все равно нужно будет изменить настройки на панели инструментов WordPress (или использовать один из вышеупомянутых плагинов).

Клиентский сертификат

Клиентский сертификат может быть сгенерирован как для использования в устройствах, так и для использования пользователями. Обычно такие сертификаты используются при двусторонней верификации, когда клиент верифицирует, что сервер действительно тот, за кого себя выдает, и сервер в ответ делает то же самое. Такое взаимодействие называется двусторонней аутентификацией или mutual authentication. Двусторонняя аутентификация позволяет повысить уровень безопасности по сравнению с односторонней, а также может служить заменой аутентификации с использованием логина и пароля.

TLS и SSL: Необходимый минимум знаний

Запрос на подпись (CSR, Certificate Sign Request)

Настройка nginx на использование клиентских сертификатов

Чаще всего, как я уже сказал, используется односторонняя аутентификация, обычно проверяется только сертификат сервера. Давайте посмотрим, как заставить веб-сервер nginx проверять клиентский сертификат. Необходимо в секцию server добавить опции для работы с клиентскими сертификатами:

После этого надо перезагрузить настройки или сервер целиком и можно проверять работу.

Установка SSL/TLS-сертификата на сервер с nginx

Для установки SSL/TLS-сертификата на веб-сервер nginx надо выполнить несколько простых шагов:

2) Прописать необходимые настройки в конфигурационный файл для хоста. Вот как это примерно должно выглядеть (это просто пример):

3) Перезапустить nginx

Блог про Linux, Bash и другие информационные технологии

Установка SSL/TLS-сертификата на сервер с Apache

Установка SSL/TLS-сертификата на Apache выглядит примерно так же.

1) Скопировать файлы ключа и сертификата на сервер в соответствующие директории

3) Создать виртуальный хост, который будет слушать 443 порт. Конфиг будет выглядеть примерно так:

Если такого условия нет, его надо добавить в конфиг. И еще одно: Надо добавить строку

4) Перезапустить веб-сервер Apache

SSL/TLS

Соединение, защищенное протоколом TLS, обладает одним или несколькими следующими свойствами:

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

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

Фаза рукопожатия

Работу протокола можно разделить на два уровня:

  • Слой протокола подтверждения подключения (Handshake Protocol Layer)
  • Слой протокола записи

Первый слой, в свою очередь, состоит из трех подпротоколов:

  • Протокол подтверждения подключения (Handshake Protocol)
  • Протокол изменения параметров шифра (Cipher Spec Protocol)
  • Предупредительный протокол (Alert Protocol)

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

Существует четыре протокола записи:

  • Протокол рукопожатия (handshake protocol);
  • Протокол тревоги (alert protocol);
  • Протокол изменения шифра (the change cipher spec protocol);
  • Протокол приложения (application data protocol);

Фаза рукопожатия

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

Сертификат - это набор данных, который подтверждает подлинность. Подтвержденная третья сторона, известная как центр сертификации (CA), генерирует сертификат и проверяет его подлинность. Чтобы получить сертификат сервер должен использовать безопасные каналы для отправки своего публичного ключа в центр сертификации. Он генерирует сертификат, который содержит его собственный ID, ID сервера, публичный ключ сервера и другую информацию. А также центр сертификации создает отпечаток (digest) сертификата, который, по сути, является контрольной суммой. Далее центр сертификации создает подпись сертификата (certificate signature), которая формируется путем шифрования отпечатка сертификата приватным ключом центра сертификации.

Для проверки сертификата сервера клиент использует публичный ключ центра сертификации для расшифровки подписи. Затем клиент самостоятельно считает отпечаток сертификата сервера и сверяет с расшифрованным. Если они не совпадают, то сертификат был подделан. Естественно, для расшифровки подписи у клиента должен быть публичный ключ центра авторизации. Поэтому клиент хранит у себя список публичных ключей подтвержденных центров сертификации. По факту, многие браузерные приложения имеют подобный список, находящийся непосредственно в их коде. Когда клиент установил подлинность сервера (сервер также может запросить сертификат у клиента), сервер использует шифрование открытым ключом для определения секретного ключа для обмена информацией.

Протокол SSL использует сертификаты для проверки соединения. Сертификаты расположены на безопасном сервере и используются для шифрования данных и идентификации Web-сайта.

Способы получения SSL-сертификата:

  • Использовать сертификат, выданный центром сертификации (Certification authority)
  • Использовать самоподписанный сертификат
  • Использовать «пустой» сертификат

Самоподписанный сертификат — сертификат, созданный самим пользователем — в этом случае издатель сертификата совпадает с владельцем сертификата. «Пустой» сертификат — сертификат, содержащий фиктивную информацию, используемую в качестве временной для настройки SSL и проверки его функциональности в данной среде.

Существует два основных способа шифрования данных: симметричный ключ (общий секретный ключ) и асимметричный ключ (открытый ключ).

Шифрование открытым ключом

Суть асимметричного шифрования заключается в том, что используется пара ключей. Один из них используется в качестве открытого (как правило, он публикуется в самом сертификате владельца), второй ключ называется секретным — он держится в тайне и никогда никому не открывается. Оба ключа работают в паре: один используется для запуска противоположных функций другого ключа. Если открытый ключ используется для того, чтобы зашифровать данные, то расшифровать их можно только секретным ключом и наоборот. Такая взаимосвязь позволяет делать две важные вещи.

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

Если заголовок шифрует данные, используя свой секретный ключ, каждый может расшифровать данные, используя соответствующий открытый ключ. Именно это является основой для цифровых подписей. (DSA)

RSA — самый распространенный алгоритм шифрования с использованием асимметричных ключей.

Шифрование симметричным ключом

Алгоритмы симметричного шифрования часто включают установленное число добавок и сдвигов. Такие алгоритмы часто используют ключ для помощи при битовых манипуляциях или для того, чтобы шифруемые данные стали более случайными. Другими словами, при увеличении размера секретного ключа может увеличиться случайность шифруемых данных, но не обязательно возрастет сложность вычислений при расшифровке. Однако, шифрование открытым ключом использует ключ как экспоненту, поэтому значительное увеличения ключа сильно увеличивает количество вычислений, требуемых для шифрования / дешифрования данных.

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

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

SSL поддерживает 3 типа аутентификации:

  • аутентификация обеих сторон (клиент — сервер),
  • аутентификация сервера с неаутентифицированным клиентом,
  • полная анонимность.

Обычно для аутентификации используются алгоритмы: RSA, DSA, ECDSA.

Если клиент имеет сертификат, содержащий параметры алгоритма Diffie-Hellman, то сертификат также содержит информацию, требующуюся для того, чтобы завершить обмен ключами. В этом случае клиент и сервер должны будут сгенерировать одинаковые Diffie-Hellman результаты (pre_master_secret) каждый раз, когда они устанавливают соединение. Для того, чтобы предотвратить хранение секрета (pre_master_secret) в памяти компьютера на время дольше, чем необходимо, секрет должен быть переведен в общий секрет (master_secret) настолько быстро, насколько это возможно. Параметры клиента должны быть совместимы с теми, которые поддерживает сервер для того, чтобы работал обмен ключами.

Фаза рукопожатия

Создатели SSL знали, что алгоритмы шифрования открытым ключом вычислительно сложные, и клиент, создающий несколько новых соединений к одному и тому же серверу в течение короткого промежутка времени может сильно нагрузить сервер, что приведет к заметным временным задержкам ответа. Однако, если клиент и сервер уже установили соединение, то ему будет соответствовать уникальный идентификатор сессии, позволяющий ссылаться на него и использовать такой же секретный ключ при последующих соединениях в рамках некоторого временного отрезка. Безусловно, такой подход привносит определенный риск в безопасность соединения. Поэтому, если необходимо, клиент может пересоздать новые идентификатор и секретный ключ для данной сессии. Microsoft’s Internet Explorer, например, проделывают эту операцию каждые 2 минуты.

Если клиент планирует обратиться к серверу, который требует клиентской аутентификации, он должен хранить свой сертификат и связанный с ним приватный ключ. Сервер должен всегда хранить свой сертификат и связанный с ним приватный ключ.

Клиент и сервер обязаны хранить идентификаторы сессий и связанные с ними секретные ключи для использования во время восстановления соединения.

Версия 1.0 никогда не была обнародована. Версии 2.0 была выпущена в феврале 1995 года, но содержала много недостатков по безопасности, которые привели к разработке SSL 3.0 версии.

Как только различные компании (Microsoft) начали предпринимать попытки разработки собственных безопасных протоколов транспортировки, IETF решило вмешаться и определить стандарт протокола шифрования. Впоследствии, при поддержке множества компаний, на основании протокола SSL 3.0 был разработан и принят стандарт RFC, получивший имя TLS 1.0. Его также часто называют SSL 3.1.

Хотя TLS и SSL имеют существенные различия в реализации, разработчики обычно замечают лишь немногие из них, а конечные пользователи вовсе их не различают. Тем не менее TLS 1.0 и SSL 3.0 несовместимы. Значительное различие состоит в том, что TLS требует определенные алгоритмы шифрования, которые SSL не поддерживает. Таким образом TLS сервер должен “откатиться” (downgrade) до SSL 3.0 для работы с клиентами, использующими SSL 3.0.

Протокол TLS делится на два слоя: TLS Record и TLS Handshake.

Схема подтверждения связи

После обработки протоколом TLS Record зашифрованные данные передаются на слой TCP для передачи.

Принцип работы SSL и TLS

Установка соединения обеспечивается в несколько этапов:

1) Клиент устанавливает соединение с сервером и запрашивает защищенное подключение. Это может обеспечиваться либо установлением соединения на порт, который изначально предназначен для работы с SSL/TLS, например, 443, либо дополнительным запросом клиентом установки защищенного соединения после установки обычного.

3) Сервер отправляет клиенту свой цифровой сертификат, подписанный удостоверяющим центром, и открытый ключ сервера.

4) Клиент может связаться с сервером доверенного центра сертификации, который подписал сертификат сервера, и проверить, валиден ли сертификат сервера. Но может и не связываться. В операционной системе обычно уже установлены корневые сертификаты центров сертификации, с которыми сверяют подписи серверных сертификатов, например, браузеры.

6) Таким образом устанавливается зашифрованное соединение. Данные, передаваемые по нему, шифруются и расшифровываются до тех пор, пока соединение не будет разорвано.

Серверный сертификат

Для подписи сертификата для сервера нам нужно выполнить следующие действия:

В серверный сертификат может включаться цепочка сертификатов, которыми подписан сертификат сервера, но ее можно также хранить в отдельном файле. В принципе, выглядит всё примерно так же, как и при генерации корневого сертификата

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

Как работают сертификаты SSL / TLS?

Сертификаты SSL / TLS работают путем цифровой привязки криптографического ключа к идентификационной информации. Это позволяет им шифровать передаваемые данные таким образом, чтобы их не могли расшифровать третьи лица.

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

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

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

Когда и почему SSL / TLS жизненно необходим?

SSL/TLS является обязательным при передаче конфиденциальной информации, такой как имена пользователей и пароли, или информации об обработке платежей.

Цель SSL/TLS - убедиться, что только одно лицо - человек или организация - может получить доступ к передаваемым данным. Это особенно важно, когда вы думаете о том, через сколько устройств и серверов передается информация, прежде чем она достигнет места назначения.

Есть три основных варианта использования, которые делают SSL/TLS обязательным для вашего сайта.

  • Когда вам нужна аутентификация: любой сервер может притвориться вашим сервером, похищая информацию, которую люди передают по пути. SSL/TLS позволяет вам подтвердить личность вашего сервера, чтобы люди знали, что вы тот, кто Вы есть, а не какой-то злоумышленник.
  • Чтобы вызвать доверие: если вы запускаете сайт, на котором запрашиваете у пользователей важные для них данные, вам необходимо вызвать у клиентов чувство доверия. Использование сертификата SSL/TLS - это наглядный способ показать посетителям, что они могут вам доверять, и это намного эффективнее, чем все, что вы могли бы сказать о себе.
  • Когда вам необходимо соблюдать некоторые стандарты: в некоторых отраслях, например в финансовой, вам потребуется поддерживать определенные базовые уровни безопасности. Существуют также стандарты безопасности платежных карт (PCI), которых вы должны придерживаться, если хотите принимать информацию о кредитных картах на своем веб-сайте. И одно из этих требований - использование сертификата SSL / TLS.

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

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

Цепочка действий по генерации сертификатов

Давайте посмотрим на практике, как происходят действия, связанные с генерацией сертификатов, с самого начала, и при этом на практике.

Таким образом мы сгенерировали сначала приватный ключ, затем запрос подписи, а затем своим ключом подписали свой же запрос и получили собственный цифровой сертификат, выданный на 10 лет. Пароль (challenge password) при генерации сертификата можно не вводить.

Приватный ключ ОБЯЗАТЕЛЬНО необходимо хранить в надежном месте, имея его можно подписать от вашего имени любой сертификат. А полученный корневой сертификат можно использовать для идентификации того, что сертификат, например, сервера подписан именно нами, а не кем-то еще. Именно такие действия выполняют авторизационные центры, когда генерируют собственные сертификаты. После создания корневого сертификата можно приступать к генерации сертификата сервера.

Google Chrome знает, использует ли веб-сайт SSL / TLS

Кроме того, с момента обновления браузера Google Chrome в июле 2018 года на веб-сайтах без сертификата SSL / TLS отображается предупреждение «небезопасно».Пользователи могут просмотреть более подробную информацию о сертификате SSL, щелкнув по нему.

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

Как добавить SSL / TLS на свой сайт?

Добавление сертификата SSL / TLS на сайт может показаться весьма сложным для тех, кто только-только начала вникать в данную тему. На первых порах лучше доверить это специалистам.

Сначала Вам следует включить доступ по SSH перед установкой клиента ACME. На этом этапе вы можете сгенерировать сертификат SSL / TLS и установить его через консоль вашего веб-хоста.

Влияет ли SSL / TLS на SEO?

Если отвечать кратко - да, влияет!

Google внес изменения в свой алгоритм еще в 2014 году, чтобы отдавать приоритет веб-сайтам, использующим SSL-сертификаты, и с тех пор они продолжают уделять этому особое внимание. Они официально заявили, что сайты со статистикой SSL будут превосходить сайты без SSL при учете того, что все остальные факторы равноценны, и, хотя защищенные сайты составляют только 1% результатов, 40% поисковиков показывают хотя бы один защищенный SSL сайт на первой странице поисковой выдачи.

На практике SSL имеет небольшое значение, когда дело доходит до SEO, и простая установка SSL-сертификата на ваш сайт будет иметь гораздо меньшее значение, чем создание уникального контента. Однако это не означает, что вы должны забыть о них и пустить все на самотек.

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

Установка сертификата SSL повлияет на выдачу вашего сайта в поисковой системе, но вам не следует его использовать его только с этой целью. Устанавливайте SSL-сертификат, чтобы вызвать доверие среди посетителей и получить повышение SEO разве что в качестве бонуса.

Что такое SSL и что такое TLS?

Безопасная передача обеспечивается при помощи аутентификации и шифрования передаваемой информации. По сути эти протоколы, TLS и SSL, работают одинаково, принципиальных различий нет. TLS, можно сказать, является преемником SSL, хотя они и могут использоваться одновременно, причем даже на одном и том же сервере. Такая поддержка необходима для того, чтобы обеспечить работу как с новыми клиентами (устройствами и браузерами), так и с устаревшими, которые TLS не поддерживают. Последовательность возникновения этих протоколов выглядит вот так:

Настройка Apache на использование клиентских сертификатов

Apache настраивается также через добавление дополнительных опций в секцию виртуального хоста:

Как видите, опции примерно такие же, как и для nginx, поскольку процесс проверки организован единообразно.

Для проверки взаимодействия сервера с клиентскими сертификатами можно проверить, устанавливается ли соединение с использованием TLS/SSL.

На стороне сервера запускаем прослушку порта при помощи openssl:

В консоли со стороны сервера можно наблюдать процесс обмена информацией между сервером и клиентом.

Со стороны сервера ошибка выглядит так:

Со стороны клиента так:

Добавим с клиентской стороны сертификат и доменное имя (можно для проверки вписать в файл /etc/hosts имя хоста для адреса 127.0.0.1):

Теперь соединение пройдет успешно и можно устанавливать серверный сертификат на веб-сервер, клиентский отдать клиенту, и работать с ними.

Читайте также: