TLS

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

Что такое TLS?

TLS защищает сетевое соединение с помощью шифрования, проверки целостности и аутентификации сервера сертификатом. HTTPS представляет собой HTTP поверх TLS; сам протокол не гарантирует добросовестность содержимого.

История версий TLS

SSL и ранние версии TLS устарели из-за известных слабостей. Современные конфигурации обычно поддерживают TLS 1.2 и TLS 1.3, причём выбор версии согласуется во время handshake.

ВерсияГодСтатус
SSL 2.01995Устарела, небезопасна
SSL 3.01996Устарела, небезопасна
TLS 1.01999Устарела
TLS 1.12006Устарела
TLS 1.22008Текущий стандарт
TLS 1.32018Новейшая, рекомендуется

Как работает TLS

Клиент отправляет ClientHello с версиями, cipher suites, SNI и другими расширениями. Сервер выбирает параметры, предъявляет сертификат, стороны получают общие ключи и переходят к защищённым данным.

Рукопожатие TLS 1.2

TLS 1.2 может требовать отдельного обмена ключами после ServerHello и сертификата. Безопасная конфигурация использует ephemeral key exchange и исключает устаревшие алгоритмы.

Client                              Server

│ │

├──── ClientHello ─────────────────► │

│ (supported ciphers, random) │

│ │

│ ◄─── ServerHello ──────────────────┤

│ (selected cipher, cert) │

│ │

├──── Key Exchange ────────────────► │

│ (encrypted pre-master secret) │

│ │

│ ◄─── Finished ─────────────────────┤

│ │

└──── Encrypted Data ◄──────────────►┘

Улучшения TLS 1.3

TLS 1.3 сокращает handshake, удаляет слабые алгоритмы и шифрует больше служебных данных. 0-RTT ускоряет повторное соединение, но допускает replay и подходит только для безопасных повторяемых операций.

Компоненты TLS

Протокол объединяет сертификаты, key exchange, cipher suite, record layer и проверку Finished. Ошибка одного компонента должна завершать соединение, а не приводить к незаметному downgrade.

Сертификаты

Сертификат связывает публичный ключ с именами SAN и цепочкой доверия. Клиент проверяет hostname, срок, подписи и доверенный root; наличие сертификата не подтверждает владельца бизнеса.

Наборы шифров

Cipher suite определяет алгоритмы защиты. В TLS 1.3 обмен ключами отделён от имени suite; в TLS 1.2 строка часто включает больше компонентов.

TLS_AES_256_GCM_SHA384 (TLS 1.3)

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)

│ │ │ │

│ │ │ └── Hash algorithm

│ │ └── Encryption algorithm

│ └── Key exchange

└── Protocol

Сценарии использования TLS

TLS применяется в HTTPS, API, почтовых протоколах, VPN и других соединениях. Каждая служба имеет собственные правила порта, STARTTLS, ALPN и проверки имени.

ПрименениеПротоколПорт
Веб-сёрфингHTTPS443
Почта (IMAP)IMAPS993
Почта (SMTP)SMTPS465
Отправка почтыSTARTTLS587
FTPFTPS990

Настройка сервера

Включите TLS 1.2 и 1.3, правильную цепочку сертификата, современные suites, OCSP по необходимости и безопасное управление ключами. SNI и ALPN должны соответствовать обслуживаемым hostname и протоколам.

Настройка TLS в Nginx

Конкретная конфигурация зависит от версии сервера и библиотек. После изменения проверьте синтаксис и реальное согласование с несколькими клиентами.

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;

ssl_prefer_server_ciphers off;

ssl_session_cache shared:SSL:10m;

Рекомендации

Автоматизируйте продление, защищайте private key, удаляйте устаревшие версии, контролируйте expiry и ошибки hostname. Планируйте ротацию и проверяйте все edge и origin-точки.

Проверка конфигурации TLS

Проверяйте точный hostname с SNI, цепочку, SAN, срок, версии, ALPN и suites. Timeout или блокировка не являются доказательством отсутствия TLS.

# OpenSSL test

openssl s_client -connect example.com:443 -tls1_3

# Check certificate

echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.