-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
ZosiscoIV edited this page Apr 12, 2025
·
1 revision
Echec de la validation du domaine par Certbot en raison de l'occupation du port 80 par un conteneur Docker Nginx
Lors de l'exécution de la commande suivante :
sudo certbot --nginx -d www.l2-7.ephec-ti.beLe certificat ne peut être généré :
- Résultat attendu : Certbot configure automatiquement Nginx et obtient un certificat Let's Encrypt pour le domaine.
- Résultat obtenu : L'erreur suivante s'affiche :
Certbot failed to authenticate some domains (authenticator: nginx).
Type: connection
Detail: Timeout during connect (likely firewall problem)
Puis :
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
- VPS OVH public
- Service Nginx tournant dans un conteneur Docker via Docker Compose
- Nginx (via image Docker officielle nginx:stable)
- Certbot version 2.10.0 (installé sur la machine hôte Ubuntu)
- Docker 24.0+
- Configuration Nginx dans
docker-compose.yml - Volume
/etc/letsencryptnon monté initialement dans le conteneur Docker
- Démarrer les conteneurs Docker (
docker-compose up -d) - Exécuter la commande
sudo certbot --nginx -d www.l2-7.ephec-ti.be - Observer l’erreur liée au port 80 et à l’échec de validation
-
Commande :
ss -tuln - Résultat :
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
- Conclusion : Un processus utilise déjà le port 80, ce qui empêche Certbot de démarrer un serveur temporaire sur ce port.
-
Commande :
ss -tuln - Contexte : exécutée depuis la machine hôte
- Résultat :
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
- Conclusion : un processus écoute déjà sur le port 80, probablement Nginx dans Docker.
-
Commande :
docker ps - Résultat :
CONTAINER ID NAMES PORTS
... tp6_web_1 0.0.0.0:80->80/tcp
-
Conclusion : Le service
tp6_web_1(Nginx) écoute sur le port 80. Certbot ne peut donc pas l’utiliser.
-
Commande :
sudo certbot --nginx -d www.l2-7.ephec-ti.be - Résultat :
Timeout during connect (likely firewall problem)
- Conclusion : La validation du challenge HTTP échoue car Certbot n’arrive pas à se lier au port 80.
Le bug est dû à l’occupation du port 80 par un service Docker (Nginx) au moment où Certbot tente de le réquisitionner pour la validation du challenge HTTP. Or, le mode --nginx de Certbot tente de modifier la configuration de Nginx pour répondre sur /.well-known/..., ce qui échoue ici car Certbot ne contrôle pas le Nginx tournant dans Docker.
Résultat : la validation échoue systématiquement.
- Arrêter temporairement le service Nginx dans Docker :
docker stop tp6_web_1- Générer le certificat en mode standalone (hors nginx) :
sudo certbot certonly --standalone -d www.l2-7.ephec-ti.be- Redémarrer Nginx :
docker start tp6_web_1-
Monter les certificats dans Docker via
docker-compose.yml:
volumes:
- /etc/letsencrypt:/etc/letsencrypt:ro- Configurer Nginx dans le container pour utiliser les certificats :
ssl_certificate /etc/letsencrypt/live/www.l2-7.ephec-ti.be/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.l2-7.ephec-ti.be/privkey.pem;- Accéder à
https://www.l2-7.ephec-ti.bevia navigateur → cadenas vert attendu - Vérifier le certificat avec
curl:
curl -v https://www.l2-7.ephec-ti.be- Vérifier avec OpenSSL :
openssl s_client -connect www.l2-7.ephec-ti.be:443- Résultats :
-
curl: code 200 avec certificat valide -
openssl: certificat émis par Let's Encrypt et domaine correspondant - Navigateur : cadenas vert, aucune erreur de certificat
-
