hostprofi.ru
Подобрать хостинг
Термин

TLS

краткое определение

TLS (Transport Layer Security) — криптографический протокол, обеспечивающий шифрование и аутентификацию данных при передаче между клиентом и сервером. Является современным стандартом, пришедшим на смену SSL.

TLS шифрует трафик между браузером и веб-сервером, предотвращая перехват и подмену данных. В браузерной строке значок замка означает, что соединение защищено TLS. Несмотря на это, многие по привычке называют его «SSL».

Версии и их отличия

ВерсияГодСтатус
SSL 2.01995Устарел (RFC 6176)
SSL 3.01996Устарел (RFC 7568, POODLE)
TLS 1.01999Устарел (PCI DSS 2018)
TLS 1.12006Устарел (RFC 8996, 2021)
TLS 1.22008Поддерживается
TLS 1.32018Актуален (RFC 8446)

Как работает рукопожатие TLS 1.3

TLS 1.3 сократил рукопожатие с 2 RTT (TLS 1.2) до 1 RTT:

  1. Клиент отправляет ClientHello с поддерживаемыми шифрами и параметрами Diffie-Hellman.
  2. Сервер отвечает ServerHello, сертификатом и уже готов к приёму данных.
  3. Клиент верифицирует сертификат и отправляет первые данные.

0-RTT (early data) в TLS 1.3 позволяет отправить данные с первым пакетом при повторном подключении, но имеет риск replay-атак.

История

Netscape разработал SSL в 1994–1995 годах для защиты e-commerce. IETF взял его под контроль и переименовал в TLS 1.0 (RFC 2246, 1999). TLS 1.3 (RFC 8446, август 2018) кардинально упростил протокол, убрав все устаревшие алгоритмы. К 2023 году TLS 1.3 используется в 70% HTTPS-соединений.

TLS в хостинге

В Nginx минимальная конфигурация: ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:.... PCI DSS с июня 2018 требует TLS 1.2 или выше для обработки платёжных данных. Let's Encrypt выдаёт сертификаты бесплатно и автоматически.

TLS handshake в деталях

TLS 1.3 handshake (RFC 8446, 2018) значительно быстрее TLS 1.2: всего 1 RTT вместо 2 RTT. Процесс TLS 1.3: клиент отправляет ClientHello с поддерживаемыми cipher suites и ключевым материалом (Diffie-Hellman). Сервер отвечает ServerHello, выбирает cipher suite, отправляет сертификат и Finished. Клиент верифицирует сертификат и отправляет Finished. Данные могут идти сразу. TLS 1.3 с 0-RTT позволяет клиенту отправлять данные в первом пакете при повторном подключении (риск replay-атак).

TLS поддерживает SNI (Server Name Indication) — расширение, позволяющее серверу хостить несколько доменов с разными сертификатами на одном IP. Клиент отправляет имя хоста в ClientHello в открытом виде (не зашифровано). ESNI/ECH (Encrypted Client Hello) — развивающееся расширение, скрывающее SNI.

Cipher suites в TLS

TLS 1.3 поддерживает только 5 cipher suites (против 37 в TLS 1.2): TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256, TLS_AES_128_CCM_8_SHA256, TLS_AES_128_CCM_SHA256. Все используют AEAD-шифрование (Authenticated Encryption with Associated Data) — гарантируют целостность данных. TLS 1.2 с устаревшими cipher suites (RC4, DES, 3DES) — уязвим, отключается через конфигурацию Nginx: ssl_protocols TLSv1.2 TLSv1.3;.

SSL vs TLS: что правильно говорить

SSL (Secure Sockets Layer) — устаревший протокол: SSL 2.0 (1995), SSL 3.0 (1996). TLS заменил SSL: TLS 1.0 (1999), TLS 1.1 (2006), TLS 1.2 (2008), TLS 1.3 (2018). SSL 2.0 и 3.0 запрещены к использованию (RFC 6176, 7568). TLS 1.0 и 1.1 официально устарели с RFC 8996 (2021). В разговорной речи «SSL-сертификат» говорят о TLS-сертификате — исторический термин. Технически правильно: TLS-сертификат, TLS-соединение.

Другие термины