Перейти к содержимому
Skip to content
← Все статьи

SSL/TLS сертификаты: как работает HTTPS

SSL/TLS — протокол шифрования, который защищает данные при передаче между браузером и сервером. SSL/TLS проверку (HTTP over TLS) сегодня является стандартом для всех сайтов: браузеры помечают HTTP-сайты как небезопасные, а поисковики учитывают HTTPS как фактор ранжирования.

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

SSL (Secure Sockets Layer) — оригинальный протокол, созданный Netscape в 1990-х. TLS (Transport Layer Security) — его современный наследник. SSL 2.0 и 3.0 давно устарели и уязвимы. Сегодня актуальны:

ПротоколГодСтатус
SSL 2.01995Запрещён (уязвим)
SSL 3.01996Запрещён (POODLE)
TLS 1.01999Устарел (отключён в браузерах с 2020)
TLS 1.12006Устарел (отключён в браузерах с 2020)
TLS 1.22008Поддерживается (минимально рекомендуемый)
TLS 1.32018Рекомендуемый (быстрее, безопаснее)

Термин «SSL-сертификат» используется по привычке, хотя технически правильнее «TLS-сертификат».

Как работает TLS-хэндшейк

При установке HTTPS-соединения клиент и сервер проходят процедуру TLS-хэндшейка:

  1. Client Hello — клиент отправляет поддерживаемые версии TLS, шифры и случайное число
  2. Server Hello — сервер выбирает версию TLS и шифр, отправляет свой сертификат
  3. Проверка сертификата — клиент проверяет цепочку доверия, срок действия, соответствие домена
  4. Обмен ключами — стороны согласовывают сессионный ключ (обычно через ECDHE)
  5. Шифрованное соединение — дальнейший обмен данными зашифрован сессионным ключом

TLS 1.3 упрощает этот процесс до одного раунда (1-RTT), а при повторном подключении может установить соединение за 0-RTT.

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

По уровню проверки

ТипПроверкаДля кого
DV (Domain Validation)Только владение доменомБлоги, небольшие сайты, стартапы
OV (Organization Validation)Домен + существование организацииБизнес-сайты, корпоративные проверку портов
EV (Extended Validation)Полная проверка организацииБанки, финансовые сервисы, крупный бизнес

По количеству доменов

Let's Encrypt

Бесплатный центр сертификации, выдающий DV-сертификаты. Поддерживается всеми браузерами. Сертификаты действуют 90 дней и автоматически обновляются через certbot:

# Установка certbot
apt install certbot python3-certbot-nginx

# Получение сертификата
certbot --nginx -d example.com -d www.example.com

# Проверка автоматического обновления
certbot renew --dry-run

Certbot автоматически настроит nginx для HTTPS и добавит cron-задачу для обновления.

Цепочка доверия

Сертификат вашего сайта подписан промежуточным сертификатом (intermediate), который подписан корневым (root). Браузер доверяет корневым CA из своего хранилища:

Root CA (в хранилище браузера)
  └── Intermediate CA (R3)
        └── Ваш сертификат (example.com)

Важно: сервер должен отдавать полную цепочку (сертификат + intermediate). Если intermediate отсутствует, некоторые клиенты не смогут проверить сертификат.

Распространённые ошибки

ERR_CERT_DATE_INVALID

Сертификат истёк или ещё не начал действовать. Решение: обновить сертификат, проверить настройку автообновления, убедиться что время на сервере корректное.

ERR_CERT_COMMON_NAME_INVALID

Домен в адресной строке не совпадает с CN или SAN сертификата. Типичный случай: сертификат для example.com не покрывает www.example.com.

ERR_CERT_AUTHORITY_INVALID

Цепочка доверия не может быть проверена. Причины: самоподписанный сертификат, отсутствует промежуточный сертификат, CA не в хранилище браузера.

NET_ERR_CERT_REVOKED

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

Mixed Content

Страница загружена по HTTPS, но содержит ресурсы по HTTP. Браузер может блокировать такие ресурсы. Решение: все URL должны использовать HTTPS или протокол-относительные пути (//).

Оптимальная конфигурация nginx

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Протоколы
    ssl_protocols TLSv1.2 TLSv1.3;

    # Шифры
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;

    # HSTS
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}

Проверка SSL-сертификата

Для проверки сертификата из командной строки:

# Информация о сертификате
openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -issuer

# Проверка цепочки
openssl s_client -connect example.com:443 -servername example.com -showcerts

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: SSL/TLS
SSL/TLS
Certificate Transparency Logs: обнаружение поддельных сертификатов и мониторинг домена
16.03.2026 · 27 просм.
SSL/TLS
SSL Pinning: что это и когда использовать
16.03.2026 · 23 просм.
SSL/TLS
Wildcard SSL-сертификаты: когда и как использовать
16.03.2026 · 15 просм.
SSL/TLS
TLS-рукопожатие: пошаговое руководство по установке защищенного соединения
16.03.2026 · 11 просм.