story-research-zapwall/fixKnowledge/letsencrypt-certificates-setup.md

3.6 KiB

Configuration des certificats Let's Encrypt pour zapwall.fr

Date

2025-12-28

Problème

Le site https://zapwall.fr/ utilisait des certificats auto-signés, ce qui provoquait des avertissements de sécurité dans les navigateurs.

Solution

Configuration de certificats Let's Encrypt valides via certbot snap.

Motivations

  • Éliminer les avertissements de sécurité dans les navigateurs
  • Obtenir des certificats SSL valides et reconnus
  • Utiliser certbot snap pour éviter le bug avec certbot et Python 3.11

Root causes

  • Certificats auto-signés utilisés initialement
  • Certbot classique présentait un bug AttributeError: can't set attribute avec Python 3.11
  • Solution : utiliser certbot via snap qui utilise son propre environnement Python

Correctifs

  1. Installation de certbot via snap : sudo snap install certbot --classic
  2. Obtention des certificats en mode standalone (nginx arrêté) : sudo certbot certonly --standalone -d zapwall.fr
  3. Copie des certificats dans le volume monté Docker pour nginx
  4. Mise à jour de la configuration nginx pour utiliser les certificats Let's Encrypt

Modifications

  • Certificats obtenus : /etc/letsencrypt/live/zapwall.fr/ (sur l'hôte)
  • Volume monté : /home/debian/sites/test-lecoffreio.4nkweb.com/deploy/nginx/certbot/conf-test//etc/letsencrypt (dans le conteneur, en lecture seule)
  • Configuration nginx :
    • ssl_certificate /etc/letsencrypt/live/zapwall.fr/fullchain.pem;
    • ssl_certificate_key /etc/letsencrypt/live/zapwall.fr/privkey.pem;

Modalités de déploiement

  1. Installer snap si nécessaire : sudo apt-get install -y snapd
  2. Installer certbot via snap : sudo snap install certbot --classic
  3. Arrêter nginx : sudo docker stop lecoffre_nginx_test
  4. Obtenir les certificats : sudo certbot certonly --standalone -d zapwall.fr --non-interactive --agree-tos --email admin@zapwall.fr
  5. Copier les certificats dans le volume monté :
    • Créer la structure : sudo mkdir -p /home/debian/sites/test-lecoffreio.4nkweb.com/deploy/nginx/certbot/conf-test/{live,archive}/zapwall.fr
    • Copier les fichiers : sudo cp /etc/letsencrypt/archive/zapwall.fr/* /home/debian/sites/test-lecoffreio.4nkweb.com/deploy/nginx/certbot/conf-test/archive/zapwall.fr/
    • Créer les liens symboliques dans live/zapwall.fr/
  6. Redémarrer nginx : sudo docker start lecoffre_nginx_test
  7. Mettre à jour la configuration nginx pour pointer vers les certificats Let's Encrypt
  8. Recharger nginx : sudo docker exec lecoffre_nginx_test nginx -s reload

Modalités d'analyse

Pour vérifier l'état des certificats :

  1. Vérifier les certificats sur l'hôte : sudo ls -la /etc/letsencrypt/live/zapwall.fr/
  2. Vérifier dans le conteneur : sudo docker exec lecoffre_nginx_test ls -la /etc/letsencrypt/live/zapwall.fr/
  3. Vérifier la configuration nginx : sudo docker exec lecoffre_nginx_test grep ssl_certificate /etc/nginx/conf.d/zapwall.fr.conf
  4. Tester la connexion SSL : openssl s_client -connect zapwall.fr:443 -servername zapwall.fr

Notes importantes

  • Les certificats sont valides uniquement pour zapwall.fr (pas pour www.zapwall.fr)
  • Pour ajouter www.zapwall.fr, configurer d'abord le DNS, puis relancer certbot avec -d zapwall.fr -d www.zapwall.fr
  • Les certificats expirent après 90 jours, mais certbot snap configure automatiquement le renouvellement
  • Le volume /etc/letsencrypt est monté en lecture seule dans le conteneur, donc les certificats doivent être copiés sur l'hôte dans le répertoire monté
  • Certbot snap utilise son propre environnement Python, évitant le bug avec Python 3.11