{{tag>sysadmin webadmin apache http2}} ====== 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: 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 ===== * https://httpd.apache.org/docs/2.4/howto/http2.html * https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslciphersuite * https://www.ctrl.blog/entry/http2-upgrade-h2.html