Table des matières

, , ,

Apache2: Activer HTTP2

La plupart des navigateurs actuels supportent le protocole HTTP/2. La sémantique n'est pas modifiée mais HTTP/2 est un protocole binaire, son principal avantage étant de fortement accélérer les communications réseau.

La plupart des navigateurs web n'utiliseront pas HTTP2 si la connexion au site n'est pas chiffrée via HTTPS.

Activer le support HTTP2

Pour supporter le protocole HTTP2 le serveur Apache ne doit pas utiliser le MPM historique prefork.

Afficher le MPM en cours d'utilisation avec la commande:

a2query -m | grep mpm_

Activer le module mpm_event si ce n'est pas encore le cas puis charger le module http2

a2enmod http2
systemctl restart apache2

Le module mod_http2 implémente toutes les fonctionnalités décrites par la RFC 7540 et supporte les connexions en texte pur (http/tcp: variante nommée h2c), ou sécurisées (https/TLS: variante nommée h2). La variante h2c peut être en mode direct ou Upgrade: via une requête initiale en HTTP/1.

Modifier la configuration:

<VirtualHost _default_:443>
    ServerAdmin administrateur@example.com
    ServerName fqdn
    # http/2 sera utilisé prioritairement 
    Protocols h2 http/1.1
...

Activer le module et redémarrer le service:

a2enmod http2
systemctl restart apache2.service 
curl --head --http2 --verbose "https://cb-velum.mairie-tournefeuille.fr/login"

La directive SSLCipherSuite définit une chaîne de caractères contenant les algorithmes autorisés

Pour lister les algorithmes de chiffrements disponibles sur le serveur:

openssl ciphers -v

Débogage

Module firefox indiquant la disponiblilité de HTTP2 https://addons.mozilla.org/en-US/firefox/addon/http2-indicator/

[Mon Apr 20 16:35:00.567360 2020] [http2:warn] [pid 30884] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.

curl

Curl doit supporter la fonctionnalité HTTP2, la commande suivante doit retourner un résutat:

curl --version | grep -i http2

debogage établissement de la liaison TLS

Références