Что такое SSL-протокол и как работает SSL-сертификат

Что такое SSL-протокол

Анна Ушакова
Анна Ушакова Младший DevOps-инженер
1 сентября 2023

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

Изображение записи

Secure Sockets Layer, SSL, — протокол, обеспечивающий шифрование, защиту и аутентификацию интернет-соединений. Несмотря на то, что начале XXI века его заменил обновленный протокол TLS (Transport Layer Security), SSL по-прежнему широко используется. 

Протоколы SSL/TLS также подходят для защиты и других подключений — например, IP-телефонии или электронной почты. 

Работа Secure Sockets Layer (SSL): рукопожатие

Работа SSL-протокола базируется на нескольких этапах:

  1. Установка соединения. Клиент отправляет запрос на установку безопасного соединения с сервером. 
  2. Запрос на сертификат. Сервер отвечает клиенту, отправляя свой цифровой сертификат, который содержит открытый ключ и информацию о сервере.
  3. Проверка сертификата. Клиент проверяет подлинность сертификата с помощью центра сертификации. 
  4. Key exchange. Клиент генерирует симметричные ключи шифрования и осуществляет их передачу с помощью открытого ключа сервера.
  5. Шифрование данных. Сервер расшифровывает симметричные ключи с помощью закрытого ключа и использует для шифрования данных, которые затем отправляет клиенту.
  6. Расшифровка данных. Клиент использует симметричные ключи для расшифровки данных, полученных от сервера.

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

Что такое SSL-сертификат

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

Зачем нужен SSL-сертификат

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

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

Самое главное — сертификат нужен, чтобы веб-сайт мог работать через шифрование HTTPS. Если сертификат отсутствует, то обмен данными осуществляется через HTTP.

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

Типы SSL-сертификатов

В зависимости от задачи доступно несколько типов сертификатов. Уровень аутентификации, обеспечиваемый центром сертификации (CA), является существенным различием между ними. 

  • Domain Validation, DV — SSL-сертификат с проверкой домена обеспечивают самый быстрый, простой и экономичный способ шифрования HTTPS. DV требует подтверждения права собственности на защищенный домен и обычно выдается в течение нескольких минут. Однако поскольку легитимность организации не проверяется, DV не подходит для бизнес-сайтов. Этот сертификат лучше использовать для внутренних веб-сервисов, тестовых серверов и доменов. 
  • Organization Validation, OV — SSL-сертификат с проверкой организации. Чтобы его получить, организация должна доказать право собственности на домен и подтвердить, что является юридически зарегистрированным бизнесом. 
  • Extended Validation, EV — SSL-сертификат с расширенной проверкой обеспечивают наиболее высокий уровень доверия. Этот вариант подходит для веб-сайтов с электронной коммерцией — например, для интернет-магазинов. Чтобы его получить, владелец сайта должен соответствовать требованиям аутентификации для OV, а также пройти дополнительную проверку. При этом сертификаты EV обеспечивают то же самое шифрование, что DV и OV. 
  • Wildcard — отдельный сертификат с подстановочным знаком (*) в поле имени домена. Это позволяет сертификату защищать несколько поддоменов, относящихся к одному базовому домену.
  • Multi-Domain SSL Certificate, MDC — может защитить до 100 различных доменных имен и поддоменов с помощью одного сертификата, что помогает сэкономить время и деньги. 
  • Unified Communications Certificate, UCC — предназначен для защиты нескольких полных доменных имен (FQDN). В UCC первый домен считается основным (базовым), а другие — доменами SAN (альтернативные имена субъекта). 

В зависимости от центра сертификации пользователь может защитить от 25 до 250 доменов, что экономит время на управление сертификатами, а также снижает стоимость. 

Платные и бесплатные сертификаты

Существуют как платные, так и бесплатные сертификаты SSL.

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

Бесплатные сертификаты SSL также доступны и могут быть получены от различных организаций, таких как Let’s Encrypt. Они предоставляют базовую безопасность и шифрование данных, но могут иметь ограниченный период действия или ограничения по функциональности.

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

Как проверить наличие сертификата

Самый простой способ узнать — это проверить URL сайта. Он должен начинаться с HTTPS. Для получения более подробной информации вы можете кликнуть на значок у адресной строки:

Проверка сертификата в адресной строке браузера

Также можно использовать сервисы вроде SSL Checker. С помощью него можно узнать, например, срок действия сертификата.

Проверка через сторонний сервис
SSL Checker.

Как получить SSL-сертификат

Алгоритм для владельца сайта

Для получения SSL-сертификата необходимо выполнить несколько действий:

1. Выберите поставщика SSL-сертификатов. На рынке существует множество компаний, которые предлагают сертификаты. Среди них — Comodo, Symantec, GlobalSign, Let’s Encrypt и другие. Выберите поставщика, учитывая ваши потребности и бюджет.

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

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

4. Предоставьте CSR поставщику сертификатов. Когда вы сгенерируете CSR, передайте его поставщику сертификатов. Он будет использовать эту информацию для создания вашего SSL-сертификата.

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

6. Получите и установите SSL-сертификат. После утверждения запроса поставщик предоставит вам SSL-сертификат. Его нужно будет установить на сервере — для этого понадобится закрытый ключ, созданный вместе с CSR. 

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

Проверка и выпуск сертификатов: подробнее о центрах сертификации

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

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

Ключи и CSR обычно генерируются на машине, на которой нужно установить сертификат. Информации в CSR зависит от уровня проверки и типа сертификата. 

После создания CSR заявитель отправляет его в CA, который самостоятельно проверяет его содержание. Если информация корректна, центр подписывает сертификат в цифровой форме. 

Когда подписанный сертификат предоставляется третьей стороне (например, когда это лицо получает доступ к веб-сайту с сертификатом), получатель может криптографически подтвердить цифровую подпись CA с помощью открытого ключа. 

Установка сертификата

С получением SSL-сертификата разобрались. Теперь подробнее рассмотрим его установку на сервер. 

Windows server

  1. Заходим на хостинг и подключаемся к своему серверу.
  2. Переходим в раздел Start/Administrative Tools/Internet Information Services (IIS) Manager.
  3. В панели Connections нажимаем на название сервера.
  4. Открываем Server Certificates.
  5. В панели Actions выбираем Complete Certificate Request.
  6. Во вкладке Specify Certificate Authority Response нажимаем на многоточие и выбираем сертификат.
  7. Нажимаем ОК.
  8. Далее следует настройка в IIS Manager. Нажимаем на имя сервера, Sites и выбираем сайт, на который необходимо установить сертификат.
  9. В панели Actions нажимаем Bindings.
  10. Во всплывающем окне Site Bindings выбираем https и нажимаем Edit.
  11. В окне Edit Site Binding выбираем сертификат. 
  12. Нажимаем ОК. 

MacOS

1. Переходим в раздел Finder/Applications/Utilities/Keychain Access.

Переход в раздел Программы

2. Выбираем System.

Переход в раздел сертификатов

3. Добавляем наш сертификат.

4. Теперь сертификат должен быть отмечен красным крестиком. Чтобы это исправить, нужно два раза кликнуть на сертификат и выбрать Always Trust во вкладке Trust.

Linux

1. Открываем терминал.

2. Добавляем наш сертификат в систему:


    sudo cp /path-to-certificate.crt /etc/ssl/certs

3. Обновляем список центров сертификации:


    update-ca-certificates

Протокол TLS как развитие SSL

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

Переход с SSL на TLS и различия между протоколами

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

1. Уязвимости SSL. В конце XX века сообщество обнаружило несколько критических уязвимостей в протоколе SSL: POODLE, Heartbleed и BEAST. Они позволяли злоумышленникам получать доступ к зашифрованной информации или проводить атаки типа Man-in-the-Middle. Это привело к снижению доверия к протоколу SSL.

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

3. Поддержка новых алгоритмов шифрования. TLS включает более безопасные алгоритмы шифрования. Пример — Advanced Encryption Standard, AES, который является более надежным и эффективным по сравнению с алгоритмом Data Encryption Standard, DES, который используется в SSL.

Развитие протокола TLS продолжается, а самая актуальная версия сегодня — 1.3.  

Заключение

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