Virtualmin y los certificados SSL
Virtualmin tiene la capacidad de solicitar y renovar certificados mediante Let’s Encrypt, se pueden solicitar nuevos certificados y renovarlos, de forma automática o manual.
Let’s Encrypt es una autoridad de certificación gratuita , automatizada y abierta que se puede utilizar para generar un certificado SSL mediante Virtualmin.
Esto permite de forma muy sencilla añadir el protocolo Https a las páginas web alojadas en el servidor Webmin.
El certificado generado por Let’s Encrypt tiene una validez de 3 meses.
También es posible mediante Virtualmin incluir certificados de pago, estos tiene una validez en la mayoría de los casos de 1 año.
La ventaja que ofrece Virtualmin es que permite renovar de forma automática los certificados generador por Let’s Encrypt de tal forma que el tiempo de validez deja de ser una desventaja.
Advertencia Certificado SSL caducado, ¿cómo solucionarlo?
Cuando Webmin detecta mediante Virtualmin que hay un certificado caducado, este te lo muestra en la página principal:
Esto lo hace con la intención de que revises que ha pasado, ya que normalmente la renovación de los certificados es totalmente transparente.
Aunque en el caso de que falle, como ha sido este caso, mostrará un mensaje de advertencia.
Si vamos a la pantalla de generación de certificados nos encontraremos con que el certificado ha caducado y el número de días que lleva caducado:
El error entonces se produce ahora, al intentar solicitar o actualizar el certificado, por alguna extraña razón estaba siendo imposible renovarlo, lanzando el sistema el siguiente error:
2021-10-02 22:35:09,472:INFO:certbot.auth_handler:http-01 challenge for facturascripts.narixasoft.es
2021-10-02 22:35:09,473:INFO:certbot.plugins.webroot:Using the webroot path /home/facturascripts/public_html for all unmatched domains.
2021-10-02 22:35:09,473:DEBUG:certbot.plugins.webroot:Creating root challenges validation dir at /home/facturascripts/public_html/.well-known/acme-challenge
2021-10-02 22:35:09,478:DEBUG:certbot.plugins.webroot:Attempting to save validation to /home/facturascripts/public_html/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y
"value": "facturascripts.narixasoft.es"
"detail": "Invalid response from http://facturascripts.narixasoft.es/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y [185.137.140.9]: \"\u003c!DOCTYPE html\u003e\\n\u003chtml xmlns=\\\"http://www.w3.org/1999/xhtml\\\" lang=\\\"es\\\" xml:lang=\\\"es\\\" \u003e\\n \u003chead\u003e\\n \u003cmeta http-e\"",
"url": "http://facturascripts.narixasoft.es/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y",
"hostname": "facturascripts.narixasoft.es",
Domain: facturascripts.narixasoft.es
Detail: Invalid response from http://facturascripts.narixasoft.es/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y [185.137.140.9]: "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"es\" xml:lang=\"es\" >\n <head>\n <meta http-e"
certbot.errors.FailedChallenges: Failed authorization procedure. facturascripts.narixasoft.es (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://facturascripts.narixasoft.es/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y [185.137.140.9]: "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"es\" xml:lang=\"es\" >\n <head>\n <meta http-e"
2021-10-02 22:35:12,954:DEBUG:certbot.plugins.webroot:Removing /home/facturascripts/public_html/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y
certbot.errors.FailedChallenges: Failed authorization procedure. facturascripts.narixasoft.es (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://facturascripts.narixasoft.es/.well-known/acme-challenge/rWyH4VSwowD1WmFfrUkwahUMCkLnfUein-AcTCa-u8Y [185.137.140.9]: "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"es\" xml:lang=\"es\" >\n <head>\n <meta http-e"
2021-10-02 22:35:14,332:DEBUG:certbot.main:Arguments: ['--manual', '-d', 'facturascripts.narixasoft.es', '--preferred-challenges=dns', '--manual-auth-hook', '/etc/webmin/webmin/letsencrypt-dns.pl', '--manual-cleanup-hook', '/etc/webmin/webmin/letsencrypt-cleanup.pl', '--duplicate', '--force-renewal', '--manual-public-ip-logging-ok', '--non-interactive', '--agree-tos', '--config', '/tmp/.webmin/936363_29724_4_collectinfo.pl', '--rsa-key-size', '2048', '--cert-name', 'facturascripts.narixasoft.es']
b'{\n "identifiers": [\n {\n "type": "dns",\n "value": "facturascripts.narixasoft.es"\n }\n ]\n}'
"value": "facturascripts.narixasoft.es"
"value": "facturascripts.narixasoft.es"
2021-10-02 22:35:16,239:INFO:certbot.auth_handler:dns-01 challenge for facturascripts.narixasoft.es
"value": "facturascripts.narixasoft.es"
"detail": "DNS problem: NXDOMAIN looking up TXT for _acme-challenge.facturascripts.narixasoft.es - check that a DNS record exists for this domain",
Domain: facturascripts.narixasoft.es
Detail: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.facturascripts.narixasoft.es - check that a DNS record exists for this domain
Analizar el problema
Parece ser que pasaba algo raro con el archivo de validación que se añade de forma temporal en la raíz de la web para que Let’s Encrypt pueda validar el dominio.
Antes cualquier caso de error de validación de certificado lo principal es asegurase de que las DNS está apuntando al dominio mediante nslookup:
C:\Users\José Miguel>nslookup facturascripts.narixasoft.es
Servidor: 254.red-80-58-61.staticip.rima-tde.net
Address: 80.58.61.254
Respuesta no autoritativa:
Nombre: facturascripts.narixasoft.es
Address: 185.137.140.9
C:\Users\José Miguel>nslookup www.facturascripts.narixasoft.es
Servidor: 254.red-80-58-61.staticip.rima-tde.net
Address: 80.58.61.254
Respuesta no autoritativa:
Nombre: www.facturascripts.narixasoft.es
Address: 185.137.140.9
En este caso, todo estaba correcto, ya que el dominio apunta, tanto en su versión normal como la www a la ip: 185.137.140.9, que es la correcta en este caso.
Entonces, el siguiente paso es revisar la configuración de Apache para el servidor en concreto para comprobar si hay algún parámetro que estuviera influyendo en la revisión:
Solución renovación certificado SSL en Virtualmin
Y justamente, ahí estaba el error, en este caso se utiliza el servidor FPM de PHP, por lo que el motor CGI no debería estar referenciado ahí.
Por lo cual, la línea a eliminar y que arregla el error de la renovación del certificado es:
Redirect /.well-known/autoconfig/mail/config-v1.1.xml /cgi-bin/autoconfig.cgi
Seguramente esta línea estaba cuando en un inicio el servidor estaba usando el motor CGI de PHP, ahí si tendría sentido esta línea para el correcto funcionamiento.
Pero al usar el motor FPM de PHP esta línea no tiene que existir, ya que estaría llamando al motor CGI que en este caso está totalmente deshabilitado.
Tras estos cambios ya se pudo renovar de forma correcta el certificado del servidor.