Installer HTTP/2 avec Apache sur Debian Jessie

Installer HTTP/2 avec Apache sur Debian Jessie

HTTP/2, kesako ?

HTTP/2 est une mise à jour majeure du protocole HTTP qui organise l’échange des données entre un site internet et un navigateur.

Ce nouveau protocole a de nombreux avantages :

  • La compression des en-têtes des requêtes et de leur réponse ce qui diminue la quantité de données échangées,
  • Le multiplexage qui va permettre aux navigateurs d’effectuer plusieurs demandes par connexion avec un serveur,
  • Le « push » de ressources du serveur au navigateur (css, js) avant même que le navigateur n’ait analysé la page,
  • la conservation d’une compatibilité du protocole HTTP/1.1 donc pas de mise à jour a effectuer de la part de l’internaute.

Cela a pour effet d’augmenter la vitesse de connexion de manière très importante si c’est un site qui affiche de nombreuses images ou vidéos.

Pour plus d’informations, une petite visite guidée sur wikipédia :
https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol/2

Et si nous commencions

Il est possible d’installer HTTP/2 de plusieurs manières :

  • Installer le paquet apache2 à partir du dépôt debian-testing,
  • Installer le paquet apache2 à partir d’un dépôt non officiel,
  • Compiler apache2 vous-même et le maintenir à jour.

De ces trois possibilités nous allons explorer la première, sans conteste la plus rapide et la plus « secure ».

La dernière version d’apache2 « stable » est la 2.4.10 mais HTTP/2 n’est disponible qu’à partir de la version 2.4.17 c’est pourquoi nous allons devoir utiliser de le dépôt “testing”.

Assurez-vous d’avoir la dernière version stable

sudo apache2ctl -version

Le cas échéant une petite mise à jour s’impose

sudo apt-get update && apt-get upgrade

Assurez-vous ensuite de vérifier que votre configuration apache est correcte

sudo apache2ctl -t

Si votre configuration est correcte, passez à l'étape suivante sinon corrigez là.

Éditez le fichier sources.list avec votre éditeur préféré

sudo vi /etc/apt/sources.list.d/testing.list

et ajouter le dépôt suivant

deb http://http.debian.net/debian testing main

A ce stade vous devez effectué un update mais SURTOUT PAS D'UPGRADE et passez à l'étape suivante.

sudo apt-get update

Il existe un ordre de priorité des dépôts lorsque l’on fait une mise à jour, pour en connaitre l’ordre spécifique à apache2

apt-cache policy apache2

Vous obtiendrez un résultat proche de celui-ci :

apache2:
   Installé: 2.4.10-10+deb8u4
   Candidat: 2.4.25-3
   Table de version:
   *** 2.4.10-10+deb8u7 0
      500 http://ftp.debian.org/debian/ jessie/main amd64 Packages
      100 /var/lib/dpkg/status
    2.4.10-10+deb8u5 0
      500 http://security.debian.org/ jessie/updates/main amd64 Packages2.4.25-3 0
      500 http://http.debian.net/debian/ testing/main amd64 Packages  

L’information la plus importante est le nombre qui est affiché en début de ligne, dans notre exemple « 500 », il détermine l’ordre d’exécution des mises à jour. Les nombres les plus petits sont exécutés en premier, nous allons donc modifier la priorité de notre dépôt « testing » avec la valeur « 490 » (ou moins selon votre configuration) mais toujours une valeur supérieure au serveur « 100 /var/lib/dpkg/status ».

Pour cela, vous devez créer le fichier suivant : « /etc/apt/preferences.d/testing » et y placer les commandes suivantes :

Package: *
Pin: release a=testing
Pin-Priority : 490

Afin de vous assurer que tout s’est bien passé, exécutez de nouveau la commande « apt-cache policy apache2 », vous devriez désormais trouver le dépôt « testing » en tête de liste.

Installez la dernière version d’apache2 et activer le module “http2”

sudo apt-get install -y -t testing apache2
sudo a2enmod http2
sudo apachectl -t
sudo service apache2 reload

Deux solutions s’offrent à vous maintenant, l’utilisation du module « http2 » sur le serveur en créant le fichier /etc/apache2/conf-available/http2.conf » :


  Protocols h2 h2c http/1.1
 
  H2Push          on 
  H2PushPriority  *                       after 
  H2PushPriority  text/css                before 
  H2PushPriority  image/jpeg              after   32 
  H2PushPriority  image/png               after   32 
  H2PushPriority  application/javascript  interleaved
 
  SSLProtocol all -SSLv2 -SSLv3 
  SSLHonorCipherOrder on 
  SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'

Activer la configuration, vérifiez-là et redémarrer apache2

sudo a2enconf http2 && sudo apache2ctl -t && sudo service apache2 reload

Ou en insérant le même code directement dans un VirtualHost pour réserver son exécution à un domaine précis et en redémarrant apache2.

sudo apache2ctl -t && sudo service apache2 reload

Vous n’avez plus qu’à tester vos sites l’activation de « HTTP/2 » sur :
https://tools.keycdn.com/http2-test

Have a nice day !

Si ce tutoriel vous a plu, n’hésitez pas à nous le faire savoir via Twitter (https://twitter.com/Aktarma_fr) ou Facebook (https://www.facebook.com/aktarma.fr/).

|
Pinterest