# 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