Korben, roi d’internet, logo bébé avec des lunettes en mode thug life Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Korben Upgrade your mind

Sécuriser facilement et gratuitement un site avec HTTPS

Vous connaissez sans doute tous, Let’s encrypt qui permet d’avoir un certificat SSL gratuit pour basculer son site en HTTPS. Mais connaissez-vous Certbot, un outil proposé par l’EFF (Electronic Frontier Foundation) qui permet d’obtenir en une ligne de commande son certificat et de configurer dans la foulée son serveur web ?

Je n’avais pas encore pris le temps de le tester et je me dis que c’est l’occasion aujourd’hui de vous en faire un petit tuto rapide. Vous allez voir, c’est rapide, sans douleur et de toute façon, vous devrez tous y passer.

Voici donc comment migrer un site web (sous WordPress dans mon exemple, mais ça fonctionne avec tout) de HTTP vers HTTPS.

Première étape : Installer CERTBOT sur votre serveur.

Pour cela, téléchargez le script, rendez le executable et lancez-le :

wget https://dl.eff.org/certbot-auto

chmod a+x certbot-auto

Seconde étape : Générez les certificats.

Si comme moi, vous utilisez nginx, lancez la commande :

./certbot-auto –nginx

Et si vous utilisez Apache :

./certbot-auto –apache

Certbot va alors lister vos virtualhosts (les sites web présents sur votre serveur). Entrez les numéros de ceux que vous voulez migrer en HTTPS. Si c’est votre première fois, je vous invite à le faire site par site. Dans le cas d’un WordPress, pensez aussi à désactiver les plugins, car certains pourraient poser problème.

À partir de là, Certbot va générer les certificats Let’s Encrypt qui vont bien et modifier la conf Apache / Nginx pour que ce soit le HTTPS qui soit activé par défaut pour votre site. Certbot vous demandera d’ailleurs si vous voulez passer exclusivement en HTTPS (2/ Secure) ou garder aussi une connexion HTTP (1/ Easy).

Je vous recommande de choisir l’option 2 pour éviter les contenus dupliqués. Certbot va encore prendre quelques secondes et voilà, la configuration est terminée. C’était facile non ? À vous de tester votre site en HTTPS maintenant. Il se peut que vous ayez un peu de « mixed content »… Pour le régler, vous devrez peut être corriger certains appels dans votre thème, parfois dans vos plugins, voire préciser votre URL en HTTPS dans votre fichier wp-config.php comme ceci :

define(‘WP_HOME’,’https://VOTRESITE.com’);
define(‘WP_SITEURL’,’https://VOTRESITE.com’);

Si malgré cela, vous remarquez que votre site reste accessible en HTTP aussi, éditez votre VirtualHost et décommentez la partie concernant les redirections 301 de HTTP vers HTTPS. Voici ce que j’ai comme exemple sous nginx :

Pour faire tester votre config SSL, vous pouvez aussi utiliser le service ssllabs dont j’ai déjà parlé, en utilisant cette URL :

https://www.ssllabs.com/ssltest/analyze.html?d=URLDEVOTRESITE.COM

3ème étape : Automatiser le renouvellement de vos certificats.

Attendez ne partez pas tout de suite, car vous devez savoir que votre certificat n’est valide que durant 90 jours. C’est comme ça. Mais pas de souci, avec Certbot, vous allez pouvoir le renouveler facilement via une simple commande.

On va d’abord tester un coup à blanc pour voir s’il n’y a pas de souci avec vos certificats et leurs éventuels renouvellements. Pour cela, entrez la commande suivante (pensez bien à préciser le chemin d’accès) :

./CHEMIN/VERS/certbot-auto renew –dry-run

Si tout se passe bien, éditez votre crontab :

crontab -e

Et ajoutez la ligne suivante pour lancer une vérification de vos certificats 2 fois par jour.

*/12 * * * * /CHEMIN/VERS/certbot-auto renew –quiet –no-self-upgrade

Et voilà cette fois c’est vraiment terminé. Vous pouvez oublier tout ça 🙂

Je rappelle quand même que Let’s Encrypt et Certbot sont gratuits, donc pensez à faire un don pour soutenir ces services.


Réponses notables

  1. Quelqu’un a une idée concernant un vhost qui n’a pas de nom de domaine ?

    J’ai un petit server mais sans NDD, dans mon site-enabled : server_name _;

    Or le script veut un domaine …

  2. Avec nginx il ne faut pas oublier de recharger la conf pour qu’il prenne en compte le nouveau certificat.
    Rajouter “&& service nginx reload” a la fin de la tache cron de certbot suffit amplement.

  3. Oki, c’est bien ce que je pensais. Bon, merci :slight_smile:

  4. mauvais titre, “Sécuriser facilement et gratuitement un site avec HTTPS” voudrais dire que de passer son site en HTTPS le sécuriserai

  5. Tes domaines sont visibles sur https://crt.sh/?Identity=%&iCAID=16418

  6. Tu as oublié dans ton cron de reloader la conf du serveur web. Comme les certificats sont placés en RAM, sans reload, les vieux certificats seront toujours servis.

  7. fofo says:

    ça peut sembler évident, mais let’s encrypt ne fonctionne que pour les sites internet, par pour les serveurs intranet

  8. En même temps si quelqu’un sniff tes paquets sur ton réseau c’est que c’est un réseau pourri. HTTPS surcharge le réseau et les ordinateurs inutilement.

  9. fofo says:

    [quote=“madshiva, post:18, topic:5606, full:true”]
    En même temps si quelqu’un sniff tes paquets sur ton réseau c’est que c’est un réseau pourri. HTTPS surcharge le réseau et les ordinateurs inutilement.
    [/quote]A partir du moment ou tu gères des droits je ne vois aucune raison de laisser balader des mots de passes ou données sensibles en clair.
    Sniffer le réseau n’est pas très compliqué, cela peut-être intentionnellement (employé sur le départ, sous traitant véreux), ou involontairement (virus). La plupart des gros réseaux sont tombés comme ça tu hackes un poste d’un user lambda (virus ou mot de passe deviné), et tu sniffes le réseau pour chopper petit à petit des privilèges.

    Avec ce genre de raisonnement, pas besoin de s’embêter à gérer des droits : un dossier réseau partagé en écriture à tout le monde, y’a qu’à mettre le fichier Excel des salaires dans un dossier “ne pas ouvrir”…

  10. Justement pour ça qu’on sécurise le réseau d’abord c’est à dire faire tomber le port réseau au cas ou celui-ci voudrais le faire. Pas de sniff sur le réseau pas de problème de lecture de données en clair.

    Après si le navigateur supporte HTTP/2, il n’ y a pas de perde de temps, au contraire un gain, mais avant que se soit à 100% en place…

    PS: J’ai jamais dit qu’il ne fallait rien faire. Pas besoin d’essayer d’interpréter donc ce que j’ai dit.

  11. LGeek says:

    Ca fonctionne et c’est très facile. Suffit de passer par Crypto niveau dashboard :

    Puis redirect 301 (optionnel selon indexation du site)

    Et finalement créer une page rule : > Create Page Rule > http://nomdedomaine.fr/ > Always Use HTTPS

  12. LGeek says:

    Ca veut dire que tu ne veux pas utiliser la version gratuite de Cloudflare qui pourtant donne accès à un certif gratis ?

  13. Salut,
    Autre que de passer d’un htttp vers un https qui m’intéresse vraiment, une information web m’intrigue: je la rapporte en tant que tel https://masquersonip.com/3917/faille-dans-la-securite-s-la-freak-attack/ que faire dans ce cas? Une telle faille ne met pas en danger tout son site web surtout que pour mon cas j’ai beaucoup de données clients (vente de produits bios en ligne), est-il judicieux de faire usage de Let’s Encrypt alors qu’il est gratuit? :neutral_face:

Continuer la discussion sur Korben Communauté

18 commentaires supplémentaires dans les réponses

Participants