10.2 Что такое ALPN и для чего он необходим
ALPN (сокр. Application-Layer Protocol Negotiation) - это расширение Transport Layer Security (TLS), позволяющее на прикладном сетевом уровне согласовывать какой протокол следует использовать через защищенное соединение, таким образом, чтобы избежать дополнительных двустороннихbзапросов. Одновременно с этим ALPN не зависит от других протоколов прикладного уровня.
На практике, это в первую очередь нужно для безопасных соединений по протоколу HTTP/2, что улучшает сжатие веб-страниц и уменьшает их задержку по сравнению с предыдущим поколением HTTP/1.1 и HTTP/1.0. Без наличия на сервере библиотеки поддерживающей ALPN работа по протоколу HTTP/2 не возможна. На текущий момент поддержка
ALPN реализована следующими библиотеками:
- OpenSSL с версии
- GnuTLS с версии 3.2.0,
- MatrixSSL с версии 3.7.1
- Network Security Services с версии 3.15.5,
- LibreSSL с версии 2.1.3,
- mbedTLS/PolarSSL с версии 1.3.6
- s2n все версии
- wolfSSL/CyaSSL с версии 3.7.0
- BearSSL с версии 0.3
- Win32 SSPI начиная с Windows 8.1 и Windows Server 2012 R2
- SChannel под управлением Windows 8.1 / Windows Server 2012 R2