Перейти к содержимому
ecdsa.com

ALPN (согласование протокола прикладного уровня)

Расширение TLS из RFC 7301: клиент предлагает протоколы прикладного уровня, например h2 и http/1.1, а сервер выбирает один из них прямо в рукопожатии, без дополнительного обмена сообщениями.
Другие написанияApplication-Layer Protocol NegotiationALPNh2acme-tls/1

Среди зарегистрированных идентификаторов — http/1.1, h2 (HTTP/2), h3 (HTTP/3 поверх QUIC), acme-tls/1 (ACME tls-alpn-01), smtp, imap, dot (DNS поверх TLS) и postgresql. HTTP/2 поверх TLS требует ALPN; если сервер не выбирает h2, клиентам приходится возвращаться к HTTP/1.1. ALPN также разделяет протоколы на одном порту и, если серверы отклоняют неизвестные значения, блокирует межпротокольные атаки вроде ALPACA (2021).

Список ALPN передаётся в ClientHello в открытом виде (если не используется ECH) и входит в отпечатки TLS, например JA4. Команда openssl s_client -alpn h2,http/1.1 показывает, что выбирает сервер.

Стандарты и ссылки

Все термины