8.1.2 Що таке ALPN і для чого він необхідний

ALPN (скор. Application-Layer Protocol Negotiation) - це розширення Transport Layer Security (TLS), що дозволяє на прикладному мережевому рівні узгоджувати який протокол слід використовувати через захищене з’єднання, щоб уникнути додаткових двосторонніх запитів. Водночас 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