CodeGym /Cours /Docker SELF /Gestion des certificats et configuration des mises à jour...

Gestion des certificats et configuration des mises à jour automatiques

Docker SELF
Niveau 7 , Leçon 4
Disponible

1. Vérification des certificats actuels

Commande certbot certificates

Commençons par le basique : comment savoir quels certificats sont déjà installés sur ton serveur ? Let's Encrypt offre un outil pratique — certbot. Avec la commande certbot certificates, tu peux obtenir des infos détaillées sur les certificats actuels.

sudo certbot certificates

En résultat, tu verras quelque chose comme ça :

Found the following certs:
  Certificate Name: example.com
    Domains: example.com www.example.com
    Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Ici sont indiqués des détails importants :

  • Nom du certificat.
  • Domaines couverts par le certificat.
  • Date d'expiration (pour que tu puisses le renouveler à temps).
  • Chemin vers les fichiers du certificat et de la clé privée.

Astuce utile :

Si tu as tendance à ignorer les notifications sur les dates d'expiration, cette commande deviendra ton meilleur pote. Personne ne veut être ce développeur qui apprend l'expiration d'un certificat via des utilisateurs furieux.


2. Mise à jour automatique des certificats

Les coulisses de Let's Encrypt

Les certificats Let's Encrypt sont valables 90 jours pour minimiser les risques de sécurité. Mais les mettre à jour manuellement tous les 3 mois, c'est vraiment pas pratique. Heureusement, il y a une commande intégrée pour automatiser ça :

sudo certbot renew

Ce processus vérifie tous les certificats et met automatiquement à jour ceux qui approchent de leur expiration.

Configurer la mise à jour automatique avec Cron

Cron est un outil intégré pour planifier des tâches sous Linux. Il exécute des commandes selon un planning défini, et c'est exactement ce qu'il nous faut pour automatiser la mise à jour des certificats. Voici comment configurer Cron pour ça :

  1. Ouvre l'éditeur Cron pour l'utilisateur actuel :

    sudo crontab -e
    
  2. Ajoute la ligne suivante à la fin du fichier :

    0 0 * * * certbot renew --quiet
    

    Cette commande exécute certbot renew chaque jour à minuit. L'option --quiet supprime les sorties inutiles, donc la mise à jour se fait silencieusement sans déranger personne.

  3. Enregistre les modifications et quitte l'éditeur.

Maintenant, ton serveur mettra automatiquement à jour les certificats, et tu n'as plus à te soucier de leur expiration (enfin, presque).


3. Mise à jour manuelle des certificats

Parfois l'automatisation ne résout pas tous les problèmes, et il faut mettre à jour les certificats manuellement. Par exemple, si tu viens d'ajouter un nouveau domaine à la configuration du site, tu dois demander un nouveau certificat manuellement. Là encore, certbot est là pour t'aider :

Exemple de commande :

sudo certbot renew

Mise à jour du certificat pour un domaine spécifique

Si tu dois mettre à jour le certificat lié à un domaine spécifique, utilise le format de requête suivant :

sudo certbot certonly --nginx -d example.com -d www.example.com

Voici :

  • --nginx indique que la configuration sera automatiquement appliquée au serveur Nginx. Pour Apache, utilise --apache.
  • Les flags -d listent les domaines pour lesquels tu veux émettre un certificat.

Après avoir exécuté la commande, Certbot vérifiera la configuration du serveur, demandera un nouveau certificat et le configurera.


4. Notifications et monitoring

Notifications par email

Lors de l'installation de Certbot, il t'a demandé ton adresse email. Si tu l'as renseigné, tu recevras des notifications 20 jours avant l'expiration du certificat. Si tu n'as pas renseigné d'email ou si tu veux le changer, tu peux le faire comme suit :

sudo certbot register --update-registration --email newaddress@example.com

Maintenant, rien ne te surprendra. Enfin, presque.

Vérification externe

Il existe des services tiers qui peuvent t'aider à suivre la validité des certificats. Par exemple, SSL Labs. Il te suffit d'entrer l'adresse du site, et le service vérifiera son certificat, y compris la validité, la chaîne de confiance et le niveau de sécurité.


5. Suppression des certificats inutiles

Parfois, les anciens certificats deviennent inutiles, par exemple si tu as cessé de gérer un domaine donné. Pour éviter d'encombrer le système, il vaut mieux les supprimer.

Commande pour supprimer :

sudo certbot delete

Certbot affichera une liste des certificats disponibles et te proposera de choisir lequel supprimer.

Conseil utile :

Fais gaffe lorsque tu supprimes des certificats, pour ne pas désactiver accidentellement un site en fonctionnement. Vérifie toujours que le certificat n'est utilisé nulle part avant de le supprimer.


6. Exemples et débogage des erreurs

Vérification après la mise à jour

Après toute modification ou mise à jour des certificats, vérifie toujours que le site fonctionne correctement. Le moyen le plus simple est d'utiliser curl :

curl -I https://example.com

Le résultat attendu est le code HTTP/1.1 200 OK.

Si quelque chose ne va pas, commence par regarder les logs :

  • Pour Nginx :

      sudo tail -f /var/log/nginx/error.log
    
  • Pour Apache :

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

Erreur fréquente : "Too Many Requests"

Si tu demandes trop souvent de nouveaux certificats, Let's Encrypt peut te bloquer avec l'erreur "Too Many Requests". Dans ce cas, il est recommandé d'utiliser le serveur de test de Let's Encrypt :

sudo certbot certonly --test-cert --nginx -d example.com

Cette commande génère un certificat de test, qui n'est pas valide pour une utilisation réelle, mais qui aide à vérifier la configuration.


7. Dernière étape : redémarrage automatique du serveur web

Let's Encrypt met à jour les fichiers de certificats, mais les serveurs web comme Nginx ou Apache ne remarquent pas les changements tant que vous ne les redémarrez pas. Ça aussi peut être automatisé. Mets à jour l'entrée Cron :

0 0 * * * certbot renew --quiet && systemctl reload nginx

Ou pour Apache :

0 0 * * * certbot renew --quiet && systemctl reload apache2

Désormais, après la mise à jour, tout certificat sera immédiatement appliqué au serveur.


Cette conférence vise à ce que tu puisses dormir tranquille en sachant que tes certificats se mettent à jour automatiquement, que les sites sont sécurisés, et que tu ne recevras pas un appel de ton boss à trois heures du matin avec "Les utilisateurs se plaignent que le site est inaccessible". La gestion des certificats est une compétence importante qui te sera utile dans un vrai boulot, surtout si tu prévois de travailler sur le déploiement d'applications web complexes ou dans l'ingénierie DevOps.

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