Différence entre NPN et ALPN et comment activer ALPN dans Apache/Nginx
NPN (Next Protocol Négociation) et ALPN (Application Layer Protocol Négociation) sont tous deux des extensions TLS. Puisque https, SPDY et HTTP/2 fonctionnent sur le port 443, le client et le serveur doivent négocier quel protocole de couche application (plain http/1.1, SPDY ou HTTP/2) à utiliser après l'établissement d'une connexion sécurisée SSL/TLS entre le client et le serveur.
Différence entre NPN et ALPN
SPDY utilise NPN pour négocier le protocole de couche application tandis que HTTP/2 utilise ALPN pour négocier. Afin de comprendre la différence entre NPN et ALPN, vous devez avoir une compréhension de base du fonctionnement de la négociation SSL/TLS.
NPN et ALPN sont utilisés lorsque le client et le serveur établissent une connexion SSL/TLS. ALPN évite un aller-retour supplémentaire car le client répertorie les protocoles de couche application pris en charge par le client dans le message d'accueil du client. Le serveur choisit un protocole et l'inclut dans le message de bonjour du serveur. Dans NPN, le serveur répertorie les protocoles pris en charge dans le message de bonjour du serveur et laisse le client choisir. ALPN est le successeur de NPN.
Src : ietf.com
La capture d'écran suivante de la capture Wireshark montre que le client répertorie trois protocoles h2, spdy/3.1 et http/1.1.
Et cette capture d'écran de la capture Wireshark montre que le serveur a choisi h2 comme protocole de couche application.
Comment activer ALPN
ALPN nécessite OpenSSL 1.0.2. La plupart des distributions de serveurs Linux sont aujourd'hui livrées avec une version beaucoup plus récente d'OpenSSL, telle que OpenSSL 1.1.1 sur Ubuntu 18.04. Vous pouvez vérifier la version OpenSSL de votre serveur en exécutant la commande suivante :
$ openssl version
Exemple de sortie :
OpenSSL 1.1.1 11 Sep 2018ALPN est utilisé dans HTTP/2, vous devez donc activer HTTP/2 sur votre serveur. Consultez l’article suivant pour voir comment cela se fait.
- Que sont SPDY et HTTP/2 et comment les activer sur Nginx
- Comment activer le protocole HTTP/2 dans Apache
Comment vérifier la prise en charge ALPN sur votre serveur
Après avoir activé HTTP/2 sur votre site, accédez à https://tools.keycdn.com/http2-test pour vérifier si ALPN est pris en charge par votre serveur.
Vous pouvez également tester la prise en charge d'ALPN par votre serveur avec la commande suivante :
echo | openssl s_client -alpn h2 -connect yourdomain.com:443 | grep ALPN
Si votre serveur ne prend pas en charge ALPN, vous verrez Aucun ALPN négocié.
Si votre serveur prend en charge ALPN, vous obtiendrez le protocole ALPN : h2.
Emballer
J'espère que cet article vous a aidé à comprendre la différence entre NPN et ALPN. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces 🙂





