Recientemente comencé a usar los certificados SSL de Let's Encrypt para mi sitio cPanelTips.com. Seamos realistas, Let's Encrypt ha cambiado la forma en que instalamos los certificados SSL.
Los viejos tiempos en los que tenía que completar su empresa y los datos personales, generar el código CSR y luego enviarlo al registrador SSL, para finalmente esperar el código CRT, ahora se han ido.
Let's Encrypt es una forma fácil y rápida de instalar certificados SSL para servidores cPanel y Linux. En mi caso, estos Certificados SSL se instalaron en CentOS 7.x 64 bits y funcionan perfectamente hasta que llegó la fecha de vencimiento para la renovación de SSL.
Sin embargo, cuando estaba por llegar el momento de renovar el certificado SSL de Let's Encrypt, noté algo extraño mientras ejecutaba la opción "renovar" usando el comando "certbot". Ver más abajo.
[[email protected]:~]/usr/bin/certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log Cert is due for renewal, auto-renewing... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for nixcp.com Waiting for verification... Cleaning up challenges Attempting to renew cert from /etc/letsencrypt/renewal/nixcp.com.conf produced an unexpected error: Failed authorization procedure. nixcp.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://nixcp.com/.well-known/acme-challenge/qtxjYi0a3FYNWpvqW-WTyZZzj848Yr0J6Sfx-75xDrg
El error fue claro:
El cliente carece de autorización suficiente ::Respuesta no válida de http://nixcp.com/.well-known/acme-challenge/
En el mismo proceso de renovación también vi otro error en otro sitio web que administro:
All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/mysecondsite.com/fullchain.pem (failure) 1 renew failure(s), 0 parse failure(s) IMPORTANT NOTES: - The following errors were reported by the server: Domain: mysecondsite.com Type: unauthorized Detail: Invalid response from http://mysecondsite.com/.well-known/acme-challenge/YjP9PAcIEANeX50kZJ9vJ-lARkryYs7yFSLhKBU9Y_M: 404 Not Found To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. The A records were configured ok at the DNS server, and the first thing that came to my mind was that certbot was trying to connect to http://, instead of https://.
Había configurado esos dos dominios para usar una redirección 301 de http a https, probé este curl en ejecución contra http para ver si había un problema con la redirección 301, pero ese no era el problema por lo que veo.
curl -I http://nixcp.com/.well-known/acme-challenge/
Devolvió un estado correcto de redireccionamiento 301, entonces ¿por qué certbot no puede llegar a la URL final?
No sé, pero hay algo que funcionó. Creé una excepción para la redirección 301 de http a https, y eso hizo que el proceso de renovación de certbot se ejecutara sin problemas para ambos dominios.
Este fue el código que usé para redirigir 301 todo de http a https excepto el directorio .bien conocido que usa Let's Encrypt:
server { listen 80; server_name www.nixcp.com nixcp.com; # Redirect all requests to https location / { return 301 https://nixcp.com$request_uri; } # This rule excludes the .well-known directory from the 301 redirect. location /.well-known { root /var/www/nixcp.com; } }
Dejar accesible el directorio .well-known usando http fue la clave para ejecutar el proceso de renovación de certbot sin problemas. Después de eso, me aseguré de que el directorio de verificación utilizado por certbot se haya creado:
mkdir -p /var/www/caneltips.com/.well-known/acme-challenge
Después de eso, ejecuté el comando de renovación nuevamente y este fue el resultado:
¡Se renovó OK por otro período de 3 meses! 🙂
Let’s Encrypt:El cliente carece de autorización suficiente ::Respuesta no válida fue modificada por última vez:5 de abril de 2017 por Esteban Borges