Перейти к содержимому
SSL-сертификаты
NEXIP / РЕДАКЦИОННЫЙ МАТЕРИАЛ

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

Полное руководство по SSL/TLS: как работает HTTPS, сертификаты, SAN, wildcard, цепочка доверия, SNI, OpenSSL и диагностика через NexIP.

Редакция NexIPNexIP Дата публикации Обновлено Время чтения10 мин Читать статью
NEXIP JOURNAL Обложка публикации
← Материалы Что такое SSL-сертификат

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

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

В этом руководстве разберём, чем SSL отличается от TLS, как работает HTTPS, что находится внутри сертификата, что такое SAN, wildcard, цепочка доверия и SNI, почему сертификат может быть действующим, но всё равно вызывать ошибку, и как диагностировать HTTPS через OpenSSL, curl и NexIP.

SSL и TLS — в чём разница

SSL — историческое название семейства протоколов защищённого соединения.

Современный HTTPS работает поверх TLS — Transport Layer Security.

Поэтому технически корректнее говорить «TLS-сертификат» или просто «сертификат для HTTPS», но термин «SSL-сертификат» настолько закрепился, что продолжает использоваться в панелях хостинга, документации и сервисах проверки.

Что такое HTTPS

HTTPS — это HTTP, передаваемый внутри защищённого TLS-соединения.

Упрощённая цепочка:

DNS
 ↓
IP
 ↓
TCP
 ↓
TLS
 ↓
HTTP
 ↓
Web application

Если DNS работает, но TLS настроен неправильно, сайт всё равно может не открыться по HTTPS.

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

Сертификат участвует сразу в нескольких задачах:

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

Что сертификат не делает

Наличие HTTPS не означает автоматически, что сайт честный, безопасный или принадлежит известной компании.

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

Что находится внутри сертификата

Обычно сертификат содержит:

  • доменное имя или список имён;
  • открытый ключ;
  • серийный номер;
  • срок действия;
  • данные издателя;
  • алгоритм подписи;
  • расширения;
  • SAN;
  • другие технические параметры.

Что такое Subject Alternative Name

SAN — Subject Alternative Name — расширение сертификата, в котором перечислены имена, для которых сертификат считается действительным.

Например:

DNS:example.com
DNS:www.example.com
DNS:api.example.com

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

Почему сертификат для example.com может не работать для www

example.com и www.example.com — разные DNS-имена.

Если сертификат содержит только:

DNS:example.com

это не означает автоматически поддержку:

www.example.com

Поэтому при выпуске сертификата нужно учитывать все реально используемые имена.

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

Wildcard использует символ *.

Например:

*.example.com

Такой сертификат может покрывать множество поддоменов одного уровня, например:

www.example.com
api.example.com
mail.example.com

Но wildcard не нужно воспринимать как универсальный сертификат для любой глубины доменной структуры.

Что такое удостоверяющий центр

CA — Certificate Authority — удостоверяющий центр, выпускающий и подписывающий сертификаты.

Браузеры и операционные системы имеют хранилища доверенных корневых сертификатов. Через них они могут проверить цепочку доверия сертификата сайта.

Что такое цепочка сертификатов

Обычно сертификат сайта не подписывается непосредственно корневым сертификатом.

Цепочка часто выглядит так:

Root CA
   ↓
Intermediate CA
   ↓
Site certificate

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

Что такое root certificate

Корневой сертификат находится на вершине цепочки доверия.

Он обычно уже присутствует в доверенном хранилище браузера или операционной системы.

Что такое intermediate certificate

Промежуточный сертификат связывает сертификат сайта с доверенным корнем.

Если веб-сервер не передаёт нужный intermediate, часть клиентов может считать цепочку неполной.

Как начинается HTTPS-соединение

Упрощённо клиент:

  1. получает IP домена через DNS;
  2. подключается к серверу;
  3. начинает TLS handshake;
  4. сообщает поддерживаемые параметры TLS;
  5. сервер возвращает сертификат и параметры соединения;
  6. клиент проверяет сертификат;
  7. стороны согласуют ключи сеанса;
  8. после этого начинается защищённый HTTP-обмен.

Что такое TLS handshake

TLS handshake — этап согласования защищённого соединения.

Во время него определяется:

  • версия TLS;
  • криптографические параметры;
  • сертификат сервера;
  • ключевой материал соединения;
  • другие параметры протокола.

Что такое TLS 1.2 и TLS 1.3

TLS 1.2 и TLS 1.3 — версии протокола TLS, которые можно встретить в современной инфраструктуре.

TLS 1.3 упростил часть handshake и исключил ряд старых криптографических механизмов.

Поддерживаемые версии зависят от клиента, сервера, reverse proxy и CDN.

Что такое SNI

SNI — Server Name Indication позволяет клиенту сообщить имя сайта во время TLS-соединения.

Это необходимо, когда на одном IP обслуживается несколько HTTPS-сайтов.

Без правильного SNI сервер может вернуть сертификат другого virtual host.

Почему проверка HTTPS только по IP может быть неправильной

Если открыть:

https://203.0.113.10/

можно получить сертификат другого сайта или ошибку имени.

Для проверки конкретного сервера с нужным hostname удобнее:

curl -I \
  --resolve example.com:443:203.0.113.10 \
  https://example.com/

Так сохраняется правильное доменное имя и SNI, но соединение отправляется на выбранный IP.

Как посмотреть сертификат через OpenSSL

openssl s_client \
  -connect example.com:443 \
  -servername example.com

Параметр -servername особенно важен для сайтов, использующих SNI.

Как вывести основные поля сертификата

openssl s_client \
  -connect example.com:443 \
  -servername example.com \
  </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates

Так можно увидеть subject, issuer и срок действия.

Как посмотреть SAN

openssl s_client \
  -connect example.com:443 \
  -servername example.com \
  </dev/null 2>/dev/null \
  | openssl x509 -noout -ext subjectAltName

Как проверить HTTPS через curl

curl -I https://example.com/

Это уже проверяет не просто наличие сертификата, а возможность установить HTTPS-соединение и получить HTTP-ответ.

Почему сертификат может быть действующим, но сайт не открывается

Возможны разные причины:

  • порт 443 закрыт;
  • веб-сервер не слушает HTTPS;
  • сертификат установлен не на тот virtual host;
  • неполная цепочка;
  • ошибка DNS;
  • неправильный SNI;
  • CDN использует другую конфигурацию;
  • проблема TLS-протокола;
  • приложение после TLS возвращает ошибку.

Ошибка: сертификат выпущен не для этого имени

Одна из самых распространённых проблем.

Например, пользователь открывает:

https://www.example.com

а сертификат разрешает только:

example.com

Нужно проверить SAN и конфигурацию HTTPS для точного hostname.

Ошибка: сертификат просрочен

У каждого сертификата есть период действия.

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

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

Ошибка: сертификат ещё не действует

Сертификат имеет не только дату окончания, но и начало периода действия.

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

Ошибка: неполная цепочка доверия

Сервер может отдавать сам сертификат сайта, но не передавать нужный intermediate.

В таком случае результат может отличаться между клиентами: один построит цепочку самостоятельно, другой покажет ошибку.

Что такое self-signed certificate

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

Он может использоваться:

  • в тестовой инфраструктуре;
  • во внутренних сетях;
  • при собственном PKI;
  • для разработки.

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

Бесплатный сертификат хуже платного?

Не обязательно.

Цена сертификата сама по себе не определяет качество шифрования соединения.

Для обычного сайта важнее:

  • корректное имя;
  • доверенная цепочка;
  • актуальный срок действия;
  • безопасная конфигурация TLS;
  • надёжное автоматическое продление.

Что такое Let's Encrypt

Let's Encrypt — широко используемый удостоверяющий центр, позволяющий автоматизировать выпуск и продление сертификатов.

На серверах для автоматизации часто применяются ACME-клиенты.

Что такое ACME

ACME — Automatic Certificate Management Environment — протокол автоматизации операций с сертификатами.

Он позволяет автоматизировать:

  • подтверждение контроля над доменом;
  • выпуск;
  • продление;
  • замену сертификатов.

Почему автоматическое продление нужно проверять

Сам факт настройки ACME ещё не гарантирует, что очередное продление сработает.

Причинами сбоя могут стать:

  • изменение DNS;
  • закрытый порт;
  • ошибка challenge;
  • изменение конфигурации веб-сервера;
  • ошибка прав доступа;
  • неработающий cron или timer;
  • CAA;
  • лимиты или ошибки CA.

Что такое CAA

CAA — DNS-запись, позволяющая ограничить список удостоверяющих центров, которым разрешено выпускать сертификаты для домена.

Пример:

example.com. IN CAA 0 issue "letsencrypt.org"

Ошибочная CAA может помешать выпуску нового сертификата.

Связь DNS и SSL

DNS и TLS — разные уровни, но они тесно связаны.

Перед подключением браузер сначала должен определить IP домена.

После переноса сайта стоит проверять:

  1. A;
  2. AAAA;
  3. новый сервер;
  4. порт 443;
  5. сертификат;
  6. SAN;
  7. цепочку;
  8. HTTP-ответ.

Общие DNS-механизмы подробно разобраны в статье «Что такое DNS-записи и как работает DNS».

IPv4 и IPv6 нужно проверять отдельно

Сайт может отдавать правильный сертификат по IPv4 и неправильный по IPv6, если A и AAAA ведут на разные серверы.

Поэтому полезно проверить:

curl -4 -I https://example.com/
curl -6 -I https://example.com/

Связь DNS с IPv4/IPv6 подробнее разобрана в статье «Чем A-запись отличается от AAAA».

Как проверить SSL-сертификат через NexIP

SSL-проверка NexIP позволяет быстро получить основные параметры сертификата сайта.

При анализе обращайте внимание на:

  • домен сертификата;
  • SAN;
  • издателя;
  • начало действия;
  • дату окончания;
  • цепочку;
  • соответствие имени;
  • ошибки проверки.

Правильный порядок диагностики HTTPS

  1. Проверить домен.
  2. Проверить A и AAAA.
  3. Проверить TCP/443.
  4. Получить сертификат с правильным SNI.
  5. Проверить имя в SAN.
  6. Проверить срок действия.
  7. Проверить issuer и цепочку.
  8. Проверить TLS.
  9. Получить HTTP-ответ.
  10. Сравнить IPv4 и IPv6 при необходимости.

Типовые ошибки SSL/TLS

Сертификат не подходит домену

Проверьте SAN и virtual host.

Истёк срок действия

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

Сервер отдаёт старый сертификат

Файл на диске мог обновиться, но веб-сервер или reverse proxy продолжает использовать прежнюю конфигурацию.

На IPv4 и IPv6 разные сертификаты

Проверьте A, AAAA и оба сервера отдельно.

Локально всё работает, внешняя проверка показывает другой сертификат

Проверьте DNS, CDN, reverse proxy, балансировщик и фактический публичный маршрут.

Цепочка неполная

Проверьте настройку intermediate certificates.

Что важно запомнить

  • Современный HTTPS использует TLS, хотя термин SSL-сертификат всё ещё распространён.
  • Сертификат должен подходить точному доменному имени.
  • SAN определяет допустимые имена сертификата.
  • Wildcard имеет ограничения.
  • Клиент проверяет цепочку доверия.
  • SNI позволяет обслуживать несколько HTTPS-сайтов на одном IP.
  • Правильный сертификат ещё не гарантирует исправность всего сайта.
  • A и AAAA могут вести на разные HTTPS-конфигурации.
  • Автоматическое продление нужно контролировать.
  • NexIP позволяет выполнить внешнюю проверку сертификата.

FAQ

SSL и TLS — это одно и то же?

Нет. SSL — более старое семейство протоколов. Современные защищённые HTTPS-соединения используют TLS, но термин «SSL-сертификат» сохранился в бытовой и коммерческой терминологии.

Нужен ли сертификат обычному сайту?

Для нормальной современной работы сайта по HTTPS — да.

Почему браузер ругается, если сертификат ещё не просрочен?

Причина может быть в неправильном имени, недоверенной или неполной цепочке, времени устройства, конфигурации TLS или сертификате другого virtual host.

Один сертификат может работать на нескольких доменах?

Да, если нужные имена включены в SAN или используются подходящие wildcard-имена.

Можно ли проверить HTTPS просто по IP?

Не всегда корректно. На одном IP может быть несколько сайтов, поэтому желательно проверять с правильным hostname и SNI.

Почему после обновления сертификата сайт показывает старый?

Возможны CDN, reverse proxy, другой сервер по AAAA, не перечитанная конфигурация веб-сервера или установка сертификата не в тот virtual host.

Нужно ли платить за SSL-сертификат?

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

Как быстро проверить сертификат?

Используйте SSL-проверку NexIP либо выполните:

openssl s_client -connect example.com:443 -servername example.com

По теме: Цепочка SSL-сертификатов: root, intermediate и fullchain.

По теме: Wildcard-сертификат: как работает *.example.com.

По теме: Что такое SNI и зачем он нужен HTTPS.

По теме: TLS 1.2 и TLS 1.3: в чём разница.

Спасибо, что дочитали

В журнале NexIP есть другие полезные разборы и исследования.

NEXIP / ИНСТРУМЕНТЫ

Проверьте на практике

Проверьте параметры из статьи с помощью инструментов NexIP.

NEXIP / ДИАГНОСТИКА

Перейдите от теории к проверке

Проверьте сайт, домен или сетевые параметры с помощью инструментов NexIP.

Открыть диагностику

Читайте дальше

Материалы по теме

SSL-сертификаты

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

Срок жизни SSL-сертификатов стремительно сокращается: сначала 200 дней, затем 100, а потом всего 47. Почему крупнейшие участники рынка толкают интернет к такому сценарию, что это изменит для владельцев сайтов и почему ручное продление HTTPS скоро станет пережитком прошлого.

Читать
SSL-сертификаты

Почему браузер пишет «Подключение не защищено»

Сообщение «Подключение не защищено» не обязательно означает, что сайт заражён или вас прямо сейчас взламывают. Оно означает, что браузер не смог нормально подтвердить защищённость HTTPS-соединения. Причин несколько — от банально…

Читать

FAQ

Частые вопросы

Можно ли выполнить эту проверку самостоятельно?

Да. В материале описана безопасная последовательность действий и указаны подходящие инструменты NexIP. Для изменения настроек сервера или DNS могут понадобиться доступы к панели провайдера.

Когда нужно повторить проверку?

Повторите её после внесения изменений и завершения времени обновления. Сохраните исходный результат, чтобы увидеть, что именно изменилось.

Вернуться в базу знаний