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
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.
GO TO FULL VERSION