Hlavní navigace

Nginx zahodil podporu NPN, pro vyjednání přechodu na HTTP/2 používá ALPN

Sdílet

Petr Krčmář 4. 11. 2021
Nginx logo Autor: Nginx, Inc.

Vývojáři uvolnili novou verzi webového serveru Nginx s označním 1.21.4. Od této verze je zrušena podpora protokolu NPN (Next Protocol Negotiation), který byl původně vyvinut pro vyjednání přechodu na protokol SPDY. Později jej však nahradil modernější protokol ALPN (Application-Layer Protocol Negotiation).

Prohlížeč i klient si musejí nějakým způsobem signalizovat, že je možné přejít z klasického HTTP/1.1 na novější verzi HTTP/2. Signalizace uvnitř aplikačního protokolu (pomocí HTTP hlavičky Upgrade) je velmi neefektivní, protože se navazuje spojení starým protokolem a teprve v něm se komunikující strany dohodnou na změně. Proto vzniklo původní rozšíření NPN, které už při navazování šifrovaného spojení pomocí TLS signalizuje, jaký protokol se bude používat uvnitř.

Původní jednoduché rozšíření TLS nazvané NPN dobře fungovalo s aplikačním protokolem SPDY. Tohle řešení ale nebylo ideální, protože seznam protokolů nabízel vždy až server, klient si musel vybrat a své rozhodnutí poté opět oznámit serveru. To přidávalo další komunikaci a prodlužovalo vyjednávání o použitém aplikačním protokolu.

Později proto bylo při vývoji HTTP/2 rozhodnuto, že je potřeba lepší řešení a v roce 2014 vzniklo RFC 7301, které obsahuje modernější protokol ALPN. Při něm už klient nabízí serveru podporované algoritmy a server v odpovědi vrací vybraný protokol. Tím se eliminuje nutnost posílat další pakety, protože vše je součástí běžného TLS vyjednávání.

Prohlížeče podporují ALPN už dávno, Chrome od roku 2016 a Firefox od 2017. Stejně tak knihovna OpenSSL už má podporu od verze 1.0.2 vydané v roce 2015. Svět se jednoznačně přiklonil k ALPN, proto nyní Nginx ruší podporu starého protokolu NPN. Na svém serveru můžete podporu ověřit pomocí webového testu.


Autor: Petr Krčmář, Root.cz

(Upozornil Michal Špaček)

Našli jste v článku chybu?
  • Aktualita je stará, nové názory již nelze přidávat.