Pour mes sites web je n’ai pas souscrit à une offre d’hébergement chez un fournisseur comme OVH, mais j’autohéberge mes sites sur mon serveur. Tu peux aller voir l’article que j’ai fait sur l’infra qu’il y a chez moi.
Qu’est-ce qu’un certificat ssl et pourquoi en utiliser un ?
La mise en place d’un certificat SSL (Secure Sockets Layer) pour un site web permet de naviguer dessus en httpS (S pour l’anglais secure /sécurisé).
Lorsque tu navigues sur un site en httpS, en résumé, ça signifie :
- d’une part que la connexion entre toi (ton navigateur) et le site (le serveur) est sécurisé et chiffré. C’est-à-dire que les échanges qui sont faits ne sont lisibles et compréhensibles que par toi et le site web. Si le message que tu envoies au site ( ou l’inverse, que le site te renvoie) est intercepté par une tierce personne, elle ne pourra rien en faire, car il sera indéchiffrable.
- D’autre part, que tu communiques bien avec le bon site web (et pas un usurpateur). C’est-à-dire que lorsque tu tapes www.facebook.fr c’est bien www.facebook.fr qui répond et non usurpateur.com qui se fait passer pour Facebook.
Le cryptage
Le principe est assez simple à comprendre , lorsque la connexion au site s’initie, il y a un échange d’outils (de clés de cryptage) qui se font. Imaginons toujours que tu souhaites naviguer sur le site Facebook.
- Ton navigateur demande à accéder à Facebook
- Facebook lui présente sa carte d’identité (son certificat) qui atteste que c’est bien Facebook
- Si l’identité est valide et qu’il n’est pas périmé, alors ton navigateur va envoyer à Facebook une clé de cryptage (préalablement encrypté avec la clé que Facebook t’a transmise)
- Facebook va décrypter ta clé de cryptage. À cette dernière étape, ton navigateur et Facebook ont tous les 2 des moyens de s’envoyer des choses cryptées et de les décryptées chacun de leur côté sans que personne d’autre entre les deux ne puisse le faire.
Ça, c’était pour la partie cryptage.
L’identité
Maintenant, chacun peut chez lui créer son propre certificat pour sécuriser son site web. C’est ce qu’on appelle un certificat autosigné.
Si Facebook le voulait, il pourrait créer son propre certificat (sa propre carte d’identité) et te la présenter lorsque tu te connectes dessus.
Le problème avec un certificat autosigné, c’est bien que tout le monde peut se créer sa carte d’identité. Et par la même occasion, se créer une fausse carte d’identité en se faisant passer pour Facebook. Potentiellement tu pourrais vouloir te connecter à www.facebook.fr, quelqu’un pourrait intercepter la connexion, te présenter une fausse carte d’identité, et en même temps te présenter une page qui ressemble exactement à celle de Facebook. c’est là que tu saisis ton login et mot de passe (ou ta carte bleue) … et boum… tu viens de donner tes informations à quelqu’un qui n’est en fait pas Facebook.
C’est pour ça qu’un certificat autosigné affiche une erreur de sécurité dans les navigateurs et te demande si tu es sûr de ce que tu fais et si tu souhaites réellement continuer à tes risques et périls.
C’est là qu’intervient le tiers de confiance, une autorité de certification (Certificate Authority / CA) . C’est un organisme tiers, reconnu et réputé fiable par les créateurs des logiciels (reconnu par Windows , Mac, Safari, Chrome, Firefox, etc etc )
c’est à un des tiers de confiance qu’il existe sur le marché qu’on va demander la création de sa carte d’identité (d’un certificat). Avant de nous donner le certificat, l’organisme va vérifier (par différents moyens possibles) que le demandeur est bien légitime.
Ça, c’était pour la partie identité
Les autorités de certification (CA)
Il y a quelques années encore, ce n’était pas courant d’avoir un certificat ssl sur son serveur. Pour une raison assez simple, soit les autorités de certification n’étaient soit pas reconnues par tous les navigateurs, soit ils font payer leurs certificats (plus ou moins cher suivant le niveau de certification, si tu souhaites que le site apparaisse avec le cadenas vert ou juste le cadenas et aussi suivant le montant des dommages couverts par les assurances en cas de problème avec le certificat “piratage”)
Certains offraient des certificats gratuits (pas toujours reconnu sur tous les systèmes et tous les navigateurs)
Il y a quelques années, celui que j’utilisait, qui avait le plus de compatibilité et qui etait gratuits etait https://www.startssl.com/
Letsencrypt
Puis le monde d’internet a changé avec Letsencrypt, une autorité de certification fondée par un collectif de gros acteur du web (tel que Facebook, Mozilla, Google , Cisco, OVH au sein de l’Internet Security Research Group (ISRG). ) Avec pour mission d’être un acteur reconnu, de sécurisé le web et le rendre accessible au plus grand nombre avec une mise en place simplifiée et gratuite.
Et en effet la mise en place peut être plus ou moins simple avec des challenges automatisés et l’obtention instantanément du certificat.
En simplifiant, de façon automatisée
- Je fais une demande pour www.anthony-jacob.com
- Letsencrypt me répond ok, si je suis vraiment www.anthony-jacob.com , met un fichier qui contient une phrase secrète dans www.anthony-jacob.com/challenge
- Je mets donc le fichier là où on me l’a demandé
- Letsencyrpt essaie d’accéder au challenge, et s’il trouve effectivement la phrase secrète qu’il attend c’est que je suis vraiment www.anthony-jacob.com .
Letsencrypt me donne alors un certificat pour www.anthony-jacob.com pour 90 jours et je devrais refaire la demande dans 90 jours
Si je souhaite un autre certificat pour blog.anthony-jacob.com, je dois faire une autre demande.
Et si je veux encore un autre certificat pour monautredomaine.anthony-jacob.com , je dois faire une autre demande Etc etc
Quand comme moi tu as plusieurs domaines qui ont chacun plusieurs sous-domaines , tu te retrouves à devoir gérer une dizaine de certificats différents avec plusieurs dates de péremption différentes. Même si le renouvellement est en partie automatisé, c’est quand même au final plus de maintenance et plus de risque que quelque chose se passe mal .
La solution est donc de mettre en place un certificat wildcard (joker). C’est un certificat qui ne va pas certifier qu’un seul sous domaine d’un domaine comme www.anthony-jacob.com, mais qui va certifier une multitude d’adresses
*.anthony-jacob.com (* est le wildcard /joker ). Tout ce qui est avant .anthony-jacob.com sera validé.
Donc un seul certificat valide
www.anthony-jacob.com , blog.anthony-jacob.com et tous les autres sous-domaines que j’utilise pour anthony-jacob.com
Pour faire ça donc, Letsencrypt ne va plus valider site par site avec un challenge pour chacun, mais va aller un niveau au-dessus et valider le domaine tout entier. Pour faire ça elle va challenger cette fois-ci les enregistrements DNS (domain name server – ce sont les serveurs qui s’occupent de dire aux gens où se trouve le site demandé “tu cherches google.fr, suis mois je sais où il est” )
c’est cette mise en place que j’ai faite récemment et que je détaille dans un article technique.
Ce n’était pas vraiment prévu de faire cet article, mais en faisant l’introduction de la mise en place technique, de fil en aiguille je suis arrivé à cette vulgarisation. Alors, dis-moi si ce genre d’article te plait et si tu souhaites en avoir d’autres !!