Что такое TLS?
TLS защищает сетевое соединение с помощью шифрования, проверки целостности и аутентификации сервера сертификатом. HTTPS представляет собой HTTP поверх TLS; сам протокол не гарантирует добросовестность содержимого.
История версий TLS
SSL и ранние версии TLS устарели из-за известных слабостей. Современные конфигурации обычно поддерживают TLS 1.2 и TLS 1.3, причём выбор версии согласуется во время handshake.
| Версия | Год | Статус |
|---|---|---|
| SSL 2.0 | 1995 | Устарела, небезопасна |
| SSL 3.0 | 1996 | Устарела, небезопасна |
| TLS 1.0 | 1999 | Устарела |
| TLS 1.1 | 2006 | Устарела |
| TLS 1.2 | 2008 | Текущий стандарт |
| TLS 1.3 | 2018 | Новейшая, рекомендуется |
Как работает 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 и проверки имени.
| Применение | Протокол | Порт |
|---|---|---|
| Веб-сёрфинг | HTTPS | 443 |
| Почта (IMAP) | IMAPS | 993 |
| Почта (SMTP) | SMTPS | 465 |
| Отправка почты | STARTTLS | 587 |
| FTP | FTPS | 990 |
Настройка сервера
Включите 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