Réparer les erreurs courantes de Let’s Encrypt/Certbot

(Last Updated On: 1 décembre 2022)

Introduction

Si vous êtes un administrateur de serveur Linux, vous savez probablement que Let’s Encrypt est une autorité de certification (CA) gratuite, automatisée et ouverte qui émet des certificats TLS validés par domaine, vous pouvez donc activer HTTPS sur votre site Web ou votre application Web sans dépenser un centime. .

Auparavant, nous avons discuté de la procédure appropriée pour obtenir et installer le certificat Let’s Encrypt TLS. Mais comme pour beaucoup de choses dans le monde Linux, des erreurs inattendues peuvent se produire et cet article partagera quelques conseils sur la façon de les corriger.

1. Utilisez la dernière version de Certbot

Il est recommandé de toujours utiliser la dernière version de Certbot. Lorsqu’une erreur se produit, certbot produit des messages d’erreur plus détaillés qui vous aident à identifier rapidement le problème. Parfois, une erreur peut être corrigée simplement en installant la dernière version de Certbot.

Vous pouvez utiliser Snap pour installer la dernière version.

sudo snap install certbot --classic

Utilisez ensuite le binaire /snap/bin/certbot au lieu du binaire /usr/bin/certbot par défaut.

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com

2. Utilisez le plugin Webroot

Pour obtenir des certificats TLS, vous pouvez utiliser le plugin webroot au lieu du plugin apache ou nginx car il est  plus stable t génér  moins d’erreurs.

Donc au lieu d’exécuter la commande  ci-dessous :

sudo /snap/bin/certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d example.com

Utilisez plutot :

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

L’option-w spécifie le dossier racine de votre site web. Dans cet exemple,

J’utilise le /var/www/html/. Vous pouvez trouver l’emplacement exact dans le fichier de configuration de votre serveur Web.

Dans Apache, vous devriez trouver une ligne comme celle-ci :

DocumentRoot "/var/www/nextcloud"

Dans Nginx, vous devriez trouver une ligne comme celle-ci :

root /var/www/nextcloud/;

3. Dépassement de délai lors de la connexion (problème de pare-feu)

Certaines personnes peuvent rencontrer une erreur comme celle-ci :

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: mail.example.com
   Type:   connection
   Detail: Fetching
   http://mail.example.com/.well-known/acme-challenge/8aNsZkYzpbFXyWUAECaJEj1eBsVhPOokDYeNTgw4nq8:
   Timeout during connect (likely firewall problem)

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.
Can't open /etc/letsencrypt/renewal/mail.example.com.conf: No such file or directory.

Il se peut que :

  • Votre enregistrement DNS A est erroné. Avez-vous mis la mauvaise adresse IP pour mail.example.com ? Veuillez ne pas saisir d’adresse IP privée dans l’enregistrement DNS A. Vous devez utiliser une adresse IP publique.
  • Votre enregistrement DNS n’est pas encore propagé. Accédez à https://dnsmap.io pour vérifier s’il est propagé.
  • Vous n’avez pas ouvert les ports TCP 80 et 443 dans le pare-feu. Le défi Certbot HTTP-01 doit accéder à une page Web particulière, vous devez donc ouvrir ces deux ports.
  • Si vous utilisez UFW, veuillez lire ce guide : Comment utiliser le pare-feu UFW sur Debian, Ubuntu, Linux Mint
  • 4. Les configurations Nginx ne prennent pas effet.

Certaines personnes peuvent rencontrer cette erreur :

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Cela signifie que votre fichier d’hôte virtuel n’a pas été chargé dans Nginx. Vous devez redémarrer Nginx.

sudo systemctl restart nginx

Parfois, il y a une erreur dans votre fichier de configuration Nginx. Exécutez la commande suivante pour le tester.

sudo nginx -t

Vérifiez également le journal des évenements de Nginx.

sudo journalctl -eu nginx

J’ai rencontré une fois l’erreur ci-dessus parce que j’ai oublié d’ajouter une directive server_name dans mon fichier de configuration Nginx, donc Nginx ne sait pas quel fichier de configuration utiliser pour la requête Certbot.

5. Non autorisé (404 introuvable)

Exemple de message d’erreur :

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: onlyoffice.linuxbabe.com
   Type:   unauthorized
   Detail: 2606:4700:20::681a:c47: Invalid response from
   https://onlyoffice.linuxbabe.com/.well-known/acme-challenge/piqJOZM3CYsCGAmT-ZdfKI2XrvteQQEyKgtIHM6DNo4:
   526

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

Vous pouvez généralement savoir pourquoi cette erreur se produit en consultant le journal des erreurs de votre serveur Web. Par exemple, j’ai rencontré cette erreur en essayant d’obtenir un certificat TLS pour la suite bureautique en ligne OnlyOffice. Le journal des erreurs du serveur Web Nginx contient les lignes suivantes.

022/12/01 04:53:23 [error] 26124#26124: *14 open() "/var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA" failed (2: No such file or directory), client: 127.0.0.1, server: webmail.sk8deal.com, request: "GET /.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA HTTP/1.1", host: "onlyoffice.linuxbabe.com", referrer: "http://onlyoffice.linuxbabe.com/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA"

J’ai donc besoin de créer un répertoire pour le protocole Let’s Encrypt ACME.

sudo mkdir -p /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/

Remplacer le propriétaire par www-data.

sudo chown www-data:www-data /var/www/onlyoffice/documentserver/letsencrypt/ -R

Essayez de créer un fichier en tant qu’utilisateur www-data.

sudo -u www-data touch /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA

Si cela réussit, vous pouvez exécuter à nouveau certbot pour obtenir un certificat TLS. Si vous voyez une erreur “autorisation refusée”, vous devez accorder l’autorisation à l’utilisateur www-data.

sudo apt install acl
sudo setfacl -R -m u:www-data:rxx /var/www/onlyoffice/

6. Essai à sec

S’il y a trop de tentatives infructueuses pour obtenir le certificat Let’s Encrypt TLS au cours d’une période, il vous sera probablement refusé de faire d’autres demandes au serveur Let’s Encrypt CA. Pour éviter que cela ne se produise, vous pouvez utiliser l’indicateur –dry-run pour les tests.

Par exemple:

sudo /snap/bin/certbot certonly --dry-run --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

Une simulation ne fonctionne qu’avec la sous-commande certonly , vous devez donc les utiliser ensemble. Une fois que vous avez corrigé l’erreur et que le test a réussi, vous pouvez obtenir un certificat TLS.

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

Emballer

J’espère que ce tutoriel vous a aidé à utiliser certbot. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de conseils et d’astuces. Prenez soin de vous


Merci de votez pour cet article :
Votez : Pas malMoyenBienAcès bienExcélent (7 votes, average: 4,71 out of 5)
Loading...

Laisser un commentaire

Translate »