61 lines
3.6 KiB
Markdown
61 lines
3.6 KiB
Markdown
# 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
|