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-соединение
Упрощённо клиент:
- получает IP домена через DNS;
- подключается к серверу;
- начинает TLS handshake;
- сообщает поддерживаемые параметры TLS;
- сервер возвращает сертификат и параметры соединения;
- клиент проверяет сертификат;
- стороны согласуют ключи сеанса;
- после этого начинается защищённый 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 домена.
После переноса сайта стоит проверять:
- A;
- AAAA;
- новый сервер;
- порт 443;
- сертификат;
- SAN;
- цепочку;
- 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
- Проверить домен.
- Проверить A и AAAA.
- Проверить TCP/443.
- Получить сертификат с правильным SNI.
- Проверить имя в SAN.
- Проверить срок действия.
- Проверить issuer и цепочку.
- Проверить TLS.
- Получить HTTP-ответ.
- Сравнить 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: в чём разница.
More practical guides are waiting in the NexIP journal.
NEXIP / TOOLS
Put it into practice
Use NexIP tools to check the parameters covered in this article.
Проверка DNS-записей
Показывает A, AAAA, MX, NS, TXT, CNAME, SOA, CAA и PTR записи.
Open toolПроверка HTTP-заголовков
Показывает ответные HTTP-заголовки и проверяет базовые защитные заголовки.
Open toolПроверка SSL-сертификата
Проверяет TLS-соединение, доверие к сертификату, даты, SAN, цепочку, протокол и совпадение домена.
Open toolNEXIP / DIAGNOSTICS
Verify what matters
Check a website, domain or network settings with real NexIP diagnostics.
Continue reading
Related materials
SSL-сертификаты будут жить всего 47 дней: почему интернет готовят к большим переменам
Срок жизни SSL-сертификатов стремительно сокращается: сначала 200 дней, затем 100, а потом всего 47. Почему крупнейшие участники рынка толкают интернет к такому сценарию, что это изменит для владельцев сайтов и почему ручное продление HTTPS скоро станет пережитком прошлого.
ReadКак узнать срок действия SSL-сертификата
Как проверить срок SSL/TLS-сертификата: notBefore, notAfter, OpenSSL, curl, ACME, автоматическое продление и мониторинг истечения.
ReadПочему браузер пишет «Подключение не защищено»
Сообщение «Подключение не защищено» не обязательно означает, что сайт заражён или вас прямо сейчас взламывают. Оно означает, что браузер не смог нормально подтвердить защищённость HTTPS-соединения. Причин несколько — от банально…
ReadFAQ
Frequently asked questions
Можно ли выполнить эту проверку самостоятельно?
Да. В материале описана безопасная последовательность действий и указаны подходящие инструменты NexIP. Для изменения настроек сервера или DNS могут понадобиться доступы к панели провайдера.
Когда нужно повторить проверку?
Повторите её после внесения изменений и завершения времени обновления. Сохраните исходный результат, чтобы увидеть, что именно изменилось.