🛡 Cómo solucioné el error de renovación con Certbot: «Invalid response from /.well-known/acme-challenge»




Durante la renovación de un certificado SSL con Certbot en un servidor Ubuntu con Apache, me encontré con el siguiente error:

Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
  Domain: www.server.net
  Type:   unauthorized
  Detail: Invalid response from http://www.server.net/.well-known/acme-challenge/...

Este mensaje me decía que Let’s Encrypt no pudo verificar el dominio porque no logró acceder al archivo de desafío (challenge) que Certbot crea temporalmente.


🔎 Diagnóstico

Las posibles causas eran:

  1. El dominio www.server.net no apuntaba a la IP correcta.
  2. Apache no estaba sirviendo correctamente los archivos de .well-known/acme-challenge/.
  3. Certbot estaba usando una ruta (webroot) equivocada.
  4. Algún redireccionamiento (como HTTP a HTTPS) estaba interfiriendo.

✅ Paso a paso para solucionarlo

1. Verifiqué que no hubiese procesos colgados de Certbot

ps aux | grep certbot

No había ningún proceso activo, así que continué.

2. Limpié archivos temporales

sudo rm -rf /var/lib/letsencrypt/.lock
sudo rm -rf /tmp/tmp*

3. Probé si el servidor servía correctamente los archivos de verificación

sudo mkdir -p /var/www/html/.well-known/acme-challenge
echo "funciona" | sudo tee /var/www/html/.well-known/acme-challenge/test.txt

Luego accedí desde el navegador:

http://www.server.net/.well-known/acme-challenge/test.txt

🟢 Si el archivo carga bien, el webroot es correcto.
🔴 Si no carga, Apache no está bien configurado o la ruta no es la correcta.

4. Ejecuté Certbot con el plugin Apache (solución más sencilla)

Como estaba usando Apache, decidí no complicarme con rutas y simplemente ejecuté:

sudo certbot --apache -d www.server.net

Este método permite que Certbot configure automáticamente la validación del dominio, sin depender del webroot.


🎉 Resultado

El certificado se renovó correctamente y el sitio volvió a tener HTTPS sin errores.


💡 Conclusión

Si estás usando Apache, lo más sencillo para renovar o emitir certificados con Certbot es usar directamente el plugin --apache, que se encarga de la autenticación y configuración automática. Solo es necesario asegurarse de que el dominio apunte correctamente al servidor y que el sitio sea accesible por HTTP.