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