Le petit guide du protocole HTTPS et des certificats SSL

par

Bienvenue dans la Matrice !

La sécurité sur Internet n’est pas une mince affaire. Tout va vite, tout est abstrait, et il est complexe de se protéger des attaques informatiques et des piratages.

Il est d’autant plus difficile de se protéger face à la quantité astronomique de données que nous échangeons chaque jour. Cela dépasse de très loin l’échelle humaine et nous sommes tout bonnement incapables de nous protéger par nous-même.

Toutefois, des protocoles d’échanges sécurisés existent et sont utilisés automatiquement, bien souvent sans que l’on en ait conscience. C’est le cas du protocole HTTPS, qui va faire l’objet de notre discussion semi-mensuelle.

Historique & Bases

Avant d’entrer dans le vif du sujet, un peu d’histoire.

Il existe beaucoup de protocoles capables d’échanger des informations via Internet. Ils ont chacun un objectif, et utilisent des chemins précis, pour que les ordinateurs et serveurs soient capables de les interpréter correctement.

Par exemple, le protocole HTTP a été inventé dans les années 90. Il utilise le port 80 et sa principale utilité est de communiquer avec des serveurs web.

Petite liste non exhaustive des protocoles les plus courants :

FTP File Transfer Protocol Transfert de fichiers
SSH Secure Shell Envoi d’instructions/commandes
HTTP HyperText Transfer Protocol Communication client/serveur
SMTP Simple Mail Transfer Protocol Envoi d’email
POP3 Post Office Protocol Réception d’email
IMAP Internet Message Access Protocol Réception d’email

Comme dans le monde réel & physique, un protocole informatique est un ensemble de règles et d’instructions que les ordinateurs et réseaux doivent respecter pour assurer le bon fonctionnement d’une infrastructure.

Quand on navigue sur Internet, on utilise surtout des protocoles de communication, comme l’http.

Il se passe un paquet de choses quand vous tapez “www.webexmachina.fr” sur votre PC. Ce dernier, via votre navigateur, va envoyer une requête HTTP à notre serveur. Après avoir trouvé une correspondance, le serveur va calculer la page à retourner à votre navigateur, au format HTML. La réponse va émettre des nouvelles requêtes, pour chaque fichier, image, média, script qui devra être récupérer, sur ce même serveur, ou ailleurs, en fonction de nos besoins.

Bigre, que d'informations !

Voilà, ça en fait des choses. Et autant vous dire que notre site est relativement basique, comparé à Facebook ou Amazon !
Et ceci n’est qu’une petite partie de ce que l’on fait comme requêtes http. A chaque fois que l’on communique avec le serveur, cela recommence, notamment lorsque l’on se connecte sur un site.

Et c’est cette partie qui va nous intéresser précisément.

Quand vous vous authentifiez, vous envoyez votre identifiant et votre mot de passe à un serveur, qui va tâcher de vous reconnaître, et vous indiquera si vous avez bien été connecté à votre compte.

Le problème étant que pour ça, vous devez l’envoyer. C’est à ce moment-là que vos infos sont les plus vulnérables car il existe une attaque, appelée “Man in the Middle”, littéralement “Homme au milieu” qui consiste à écouter & intercepter des flux de données, et à les relayer au serveur comme si de rien n’était.

Anecdote : Retour à l’époque du télégraphe.

Grossomodo, le télégraphe consiste en des messages “codés” par un émetteur et décodés par le destinataire, le langage utilisé le plus connu étant le morse. Cela se transmet par électricité, au travers de loooongs câbles qui parcourent les USA de long et en large.

Et bien un jour, un petit malin a eu l’idée de brancher une machine directement sur les câbles, ce qui lui a permis de littéralement écouter toutes les conversations qui passaient par là.

C’est l’ancêtre de nos piratages informatiques !

Comme quoi le piratage n’est pas quelque chose de récent. Et si c’était déjà chiant à l’époque de se faire voler une information, c’est encore pire aujourd’hui. On envoie non seulement des identifiants, des mots de passe, mais également des informations bancaires pour nos paiements en ligne !

Mais heureusement, on a - au fur et à mesure des époques - su améliorer la confidentialité et la sécurité des messages transmis, grâce à la cryptographie que l’on maîtrise depuis l’Antiquité.

Le protocole HTTPS

La version sécurisée du protocole HTTPS a vu le jour peu de temps après son grand frère, en 1994. Cela fonctionne exactement comme le protocole HTTP, mais avec la certitude que c’est bien le serveur qui vous répond, et pas un “Man in the Middle”.

L’HTTPS se caractérise par deux choses :

  • Un algorithme de chiffrement
  • Un certificat d’authenticité

Historiquement, le certificat de sécurité était transmis par une autorité tiers, reconnue par les navigateurs. Cela permettait de valider la présence d’un certificat sur votre serveur.
Ce certificat contient également des informations permettant de crypter les échanges, aux moyens de ce qu’on appelle une clef de chiffrement. Seuls les principaux concernés (Vous et le serveur du site web visité) connaissent la clef, ce qui garantit l’intégrité des informations échangées.

Qui dit chiffrement dit calcul. A l’époque, cela consommait plus de données que le protocole http et il fallait l’utiliser avec parcimonie. Aujourd’hui, nos machines sont bien plus puissantes et nos connexions bien plus rapides, et il est plus que recommandé de mettre en place ce protocole https sur votre site, peu importe la criticité des données à échanger.

Le certificat SSL

Sans certificat SSL, pas d’HTTPS. Voici donc quelques explications sur ces fameux certificats.

Comme dit plus haut, un certificat SSL est délivré par une autorité de confiance, reconnue de tous. En vous attribuant un certificat, elle se porte en quelque sorte garant pour vous.
Ce certificat peut avoir plusieurs niveaux, correspondant à un algorithme de chiffrement. Plus il est élevé, plus vos données sont cryptées et donc protégées. De même, plus votre identité est vérifiée, et donc garantie.

Obtenir un certificat SSL est aujourd’hui chose facile et peu coûteuse, car il existe des services, comme Let’s Encrypt, qui permettent cela gratuitement !
Il est même possible que votre hébergeur se soit interfacé avec le service, et vous autorise à l’utiliser sur l’ensemble de vos sites web.
Si vous souhaitez toutefois disposer d’un certificat SSL d’un niveau supérieur, vous pouvez l’acheter, chez votre hébergeur ou chez une société tierce. Les prix vont d’une cinquantaine à plusieurs centaines d’euros par an. Oui je sais, c’est assez variable.

Validé par Let's Encrypt
Validé par Comodo

Redirection automatique vers https

Heureusement, les informaticiens sont des feign… gens plein de bon sens et de pragmatisme.

Sur tous les serveurs web, vous pouvez mettre en place une règle qui permettra de convertir toutes les requêtes http dans leur équivalent en https.

Voici comment faire cela sur les deux types de serveur les plus connus :

Serveur Apache

Ouvrez votre fichier .htaccess, à la racine de votre site web et ajoutez ces lignes là :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

Il est également possible de le faire à d’autres endroits, mais si vous le savez, vous n’avez probablement pas besoin de cet article pour vous le dire :)

Serveur Nginx

Ouvrez votre fichier de configuration pour votre site web et vérifier que les lignes ci-dessous soient présentes :

server {
listen 80;
server_name nom-domaine.fr www.nom-domaine.fr;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name nom-domaine.fr www.nom-domaine.fr;
ssl on;
[....]
}

Voilà, c’est assez rapide à mettre en place. Mais ce n’est que la redirection automatique. La majorité des hébergements s’occupent de configurer l’utilisation du protocole https pour vous aujourd’hui, et c’est tant mieux, car c’est assez abstrait.

Le sujet ne sera pas abordé dans cet article. Beaucoup trop technique et complexe. Voici toutefois deux liens pour vous donner une idée de ce que traverse un développeur devant configurer correctement l’utilisation de l’https :

On s’amuse bien dans notre métier :D

Impact sur le SEO

Depuis 2014, l’utilisation du protocole https est devenu un critère dans les algorithmes de recherche et de classement de Google.

Tout comme le fait d’être compatible mobile, la non utilisation d’un protocole de chiffrement correctement configuré est très probablement pénalisée par les moteurs de recherche, même s’ils restent assez flous là dessus.

Conclusion

Même si cela impacte - très légèrement - les performances de votre site, vous devez faire en sorte que vos utilisateurs passent par https pour naviguer chez vous. C’est un standard demandé par tous les principaux acteurs du web.

Et aujourd’hui, cela n’est même plus coûteux, grâce à l’initiative de services comme Let’s Encrypt, vous pouvez même obtenir un certificat SSL gratuitement. Même pas besoin de maintenance, elle est pas belle la vie ?

Gardez en tête que la sécurité informatique parfaite n’existe pas. Tout comme la sécurité physique, même la meilleure serrure peut être crochetée, pour peu qu’on en ait le temps et les compétences. C’est exactement la même chose sur Internet.

Tout ce que l’on peut faire pouvant entraver les piratages est à appliquer, ou tout du moins à considérer sérieusement.