CodeGym /Cours /Docker SELF /Configuration de HTTPS (SSL/TLS) avec Let's Encrypt

Configuration de HTTPS (SSL/TLS) avec Let's Encrypt

Docker SELF
Niveau 7 , Leçon 3
Disponible

Configuration de HTTPS (SSL/TLS) avec Let's Encrypt

1. De quoi parle cette conférence et pourquoi c'est important

Dans le monde moderne, HTTPS est déjà devenu la norme pour tous les sites. Si tu veux que tes utilisateurs se sentent en sécurité et que Google ne rétrograde pas ton site dans les résultats de recherche (oui, HTTPS influence le SEO), tu dois absolument configurer SSL/TLS. Le protocole HTTPS protège les données transmises entre l'utilisateur et le serveur grâce au chiffrement, ce qui empêche les pirates de les intercepter.

Dans cette conférence, on va analyser pas à pas comment connecter HTTPS gratuitement à ton serveur web avec l'aide de Let's Encrypt. Let's Encrypt, c'est une autorité de certification (CA) réputée qui offre des certificats gratuits et des outils pour les installer. On apprendra aussi à prolonger automatiquement nos certificats pour éviter les tracas dus à leur expiration.

HTTP contre HTTPS

HTTP (Hypertext Transfer Protocol) — c'est un protocole de transfert de données. Il est super pour regarder des mèmes de chats, MAIS ! Si quelqu'un se connecte à ton réseau Wi-Fi (par exemple, dans un café), il pourra intercepter les données que tu envoies au serveur (quelle horreur, ton mot de passe deviendra "leur mot de passe").

HTTPS (Hypertext Transfer Protocol Secure) — c'est la version de HTTP avec chiffrement ajouté. Les données échangées entre le client et le serveur sont protégées grâce à SSL/TLS (Secure Sockets Layer / Transport Layer Security). Les pirates ne peuvent plus voir le contenu des "paquets" de données, même s'ils arrivent à les intercepter.


2. Installation de Let's Encrypt et Certbot

Certbot est un outil des développeurs de Let's Encrypt qui vous permet d'obtenir et de configurer facilement des certificats SSL pour votre serveur web. Il est assez malin pour travailler directement avec Nginx ou Apache, en faisant tout le boulot pour nous. Commençons par l'installation.

Installation de Certbot

Assurez-vous que votre serveur est à jour :

sudo apt-get update
sudo apt-get upgrade

Maintenant, installons Certbot et ses plugins :

  • Pour Nginx :

    sudo apt-get install certbot python3-certbot-nginx
    
  • Pour Apache :

    sudo apt-get install certbot python3-certbot-apache
    
Fait intéressant :

Certbot lui-même est juste du code Python, activement maintenu par la communauté. Il s'intègre facilement avec la plupart des serveurs.


3. Obtenir un certificat SSL avec Certbot

Pour Nginx

Certbot peut configurer automatiquement le HTTPS pour ton site si tu utilises Nginx. Saisis :

sudo certbot --nginx

Certbot va scanner tes hôtes virtuels actuels (les blocs server dans la configuration). Il te demandera pour quel domaine tu veux configurer le HTTPS. Assure-toi que le domaine pointe vers ton serveur via DNS (par exemple, en utilisant un enregistrement A).

Exemple de sortie :

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sélectionne ton domaine (par exemple, 1).

Certbot configurera automatiquement la configuration de Nginx et la vérifie. Une fois l'installation réussie, tu verras un message du type :

Congratulations! Your certificate and chain have been saved ...

Désormais, ton site est accessible via HTTPS. Tu peux vérifier cela en ouvrant https://example.com dans un navigateur.


Pour Apache

Si tu utilises Apache, la commande sera légèrement différente :

sudo certbot --apache

Certbot scannera également tes hôtes virtuels (les blocs <VirtualHost>) et proposera de configurer le HTTPS pour les domaines sélectionnés. Choisis ceux que tu veux, et Certbot s'occupe de tout.

À la fin du processus, tu verras de nouveau un message de félicitations, et tu pourras vérifier l'accessibilité de ton site via HTTPS.


4. Renouvellement automatique des certificats

Les certificats Let's Encrypt sont valides seulement pour 90 jours, donc vous devez les renouveler régulièrement. Certbot peut le faire automatiquement, mais on doit s'assurer que tout est bien configuré.

Vérification des dates d'expiration des certificats

Vous pouvez vérifier quand votre certificat expire :

sudo certbot certificates

Le résultat affichera vos domaines et les dates d'expiration de leurs certificats.

Configuration du renouvellement automatique

Lors de l'installation, Certbot ajoute automatiquement une tâche dans Cron ou un Systemd Timer pour vérifier les mises à jour. Si vous voulez vous assurer que tout marche bien, ajoutez une tâche de test dans Cron :

sudo crontab -e

Ajoutez la ligne suivante :

0 0 * * * certbot renew --quiet

Cette commande vérifie et renouvelle les certificats tous les jours à minuit. L'option --quiet supprime l'affichage d'informations inutiles.

Renouvellement manuel

Si vous voulez renouveler vos certificats manuellement (par exemple, pour des tests), utilisez :

sudo certbot renew

5. Activation de la redirection automatique HTTP → HTTPS

Ton site peut toujours être accessible via HTTP, mais ce n'est pas sécurisé. Configurons une redirection automatique de toutes les requêtes vers HTTPS.

Pour Nginx

Certbot peut configurer automatiquement la redirection lors de l'émission du certificat. Si tu n'as pas activé cette option avant, ajoute la redirection manuellement dans ton fichier de configuration du virtual host :

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

Redémarre Nginx pour appliquer les changements :

sudo systemctl restart nginx

Pour Apache

Certbot propose aussi d'activer automatiquement les redirections. Si tu as sauté cette étape, ajoute dans ton fichier de virtual host :

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Redémarre Apache :

sudo systemctl restart apache2

6. Débogage des erreurs

Si quelque chose ne fonctionne pas comme prévu, commence par consulter les logs :

Pour Nginx

sudo tail -f /var/log/nginx/error.log

Pour Apache

sudo tail -f /var/log/apache2/error.log

Tester la configuration

Vérifie aussi la configuration du serveur web :

  • Pour Nginx :

    sudo nginx -t
    
  • Pour Apache :

    sudo apachectl configtest
    

Vérification de HTTPS

Assure-toi que ton site est accessible en HTTPS :

curl -I https://example.com

Tu devrais voir le statut 200 OK et la ligne Strict-Transport-Security, ce qui signifie que HTTPS fonctionne.

Maintenant, tu es prêt à créer des sites sécurisés en HTTPS. Tes utilisateurs seront contents, Google aussi, et tu pourras dormir tranquille en sachant que tes données sont protégées contre les méchants d'internet.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION