Con las nuevas exigencias de uso de certificados SSL en la navegación uno de los viejos amigos de los administradores, Webmin, comenzó a dar problemas, ya que por defecto se instala con un certificado autofirmado, que además no pasa muchas configuraciones de seguridad de los navegadores más usuales. Quise instalar Let’s Encrypt en una máquina Ubuntu 18.04, pero me encontré lo de siempre: muchos post son copia de otros que no sirven para nada.
Es posible que los atacantes estén intentando robar tu información de smart01.xxxxx.xxx (por ejemplo, contraseñas, mensajes o tarjetas de crédito). Más información
NET::ERR_CERT_AUTHORITY_INVALID
Te explico como lo hice yo, y me funciono, para una Ubuntu 18.04, con Let’s Encrypt basado en DNS-01 challenge, con Cloudflare como nameserver del dominio, usando acme.sh
Este artículo fue reeditado el 18 de marzo para corregir los cambios existentes en Clouflare y acme.sh
Contenidos
Llevaba tiempo pasando de largo del problema de los certificados autofirmados de Webmin. Sabía que se podía usar Let’s Encrypt, pero como imaginaba, no iba a ser todo fácil.
Cuando llegue a su configuración algo fallaba.
Había algo que no cuadraba, y la ayuda en Virtualmin, en sus foros, en la red, no era muy alagüeña.
No quería perderme en un sin fin de paquetes, clientes oficiales y no oficiales de Let’s Encrypt, y dado que tengo clientes en diversos proveedores y registradores, opte por este script acme.sh
En mi caso, el dominio que estaba configurando, lo tengo en una cuenta de Cloudflare, que tiene un hermosa API, que me facilitaba las cosas, ya que la validación por desafío DNS-01 requiere una entrada TXT, y mejor si una vez validado el hostname, borramos la entrada de nuestra zona dns.
En un usuario (mejor por seguridad, no acostumbrarse a trabajar como root)
$ cd /tmp
# git clone https://github.com/Neilpang/acme.sh.git
# cd acme.sh
# ./acme.sh --install --accountemail tu-correo-id@tu-dominio-correo
Editado el 17 de Marzo 2021 – Nuevo método con CloudFlare
En el fichero de configuración account.conf debemos añadir, nuestros datos de la cuenta de Cloudflare que gestiona el dominio en cuestión, que podemos obtener en nuestro dashboard de usuario de Cloudflare, en profile.
CF_Key='bb1ec8f3ImAGiNaRiO4f12786d1597e99' CF_Email='mi_correo_tecnico@castris.com'
Como en todo las cosas cambian con el tiempo, y aprovecho que hoy tenía que actualizar a un cliente de Outsourcing su instalación de webmin, para corregir el nuevo modelo.
Al crear el token nuestro consejo es el siguiente, sobre todo si tenemos multiples dominios y/o multiples subdominios en un dominio, por seguridad.
Esta muy generalizado en los servidores en los que realizo auditorías, la dejadez por omisión de elementos que si bien son brechas mínimas de seguridad, puede llegar a ser grandes brechas. Si no se tiene una buena herramienta de gestión de recursos de sistemas, al final podemos olvidar que tenemos por ahí una llave API, que permite la edicíón de todos nuestro dominio y encima desde cualquier sitio. Imagínatelo!!! Menudo desastre.
Salimos de la sesión actual, ya que el instalador realizó algunos cambios en nuestro fichero de configuración del shell. Ahora solo resta hacer la primera llamada con el script para generar el certificado.
$ acme.sh --issue --dns dns_cf --ocsp-must-staple --keylength 4096 -d hostname.midominio.com [Wed Mar 17 21:24:36 CET 2021] Using CA: https://acme-v02.api.letsencrypt.org/directory [Wed Mar 17 21:24:36 CET 2021] Single domain='hostname.domain.fdqn' [Wed Mar 17 21:24:36 CET 2021] Getting domain auth token for each domain [Wed Mar 17 21:24:38 CET 2021] Getting webroot for domain='hostname.domain.fdqn' [Wed Mar 17 21:24:38 CET 2021] hostname.domain.fdqn is already verified, skip dns-01. [Wed Mar 17 21:24:38 CET 2021] Verify finished, start to sign. [Wed Mar 17 21:24:38 CET 2021] Lets finalize the order. [Wed Mar 17 21:24:38 CET 2021] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/116012875/8509137526' [Wed Mar 17 21:24:40 CET 2021] Downloading cert. [Wed Mar 17 21:24:40 CET 2021] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03fa004c3237206af92bc8cffaf9622c8582' [Wed Mar 17 21:24:40 CET 2021] Cert success. -----BEGIN CERTIFICATE----- MIIGPjCCBSagAwIBAgISA/oATDI3IGr5K8jP+vliLIWCMA0GCSqGSIb3DQEBCwUA MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD EwJSMzAeFw0yMTAzMTcxOTI0MzlaFw0yMTA2MTUxOTI0MzlaMB4xHDAaBgNVBAMT ... ... i9gCzGkO2ul4kwgwEQYIKwYBBQUHARgEBTADAgEFMA0GCSqGSIb3DQEBCwUAA4IB AQC1m+63A4s2hgzjYEePgWvue5sne8XS6n4D1DN3QvLr5WgQRyeeQmAGrG1n88Mn 5Na/fSD3vHCFyF7mOFq+raFot9NQkemIT5nefic1CnSKpf9AKp0LRcNdT7K5zk6g GM+45x3+mkJ1GHZ5ZGXEyLqK17DWwza7N2zquxb/dwaUBZNFC8T6rp+yuQQin9qA xsYWkplU7FcZN1Rd1Rc5kZarADhyl2q+sBV6pExm5B6dDKKOGABM2c9dMzlV10K0 qtKtQpJh1K5gUOK4JJG50h4lCF0JzDuG2ACPDT91vR6stNIxbUg7+0PC7KoLr/NK uRszqVFYCSs9K+y5fd/kFxtt -----END CERTIFICATE----- [Wed Mar 17 21:24:40 CET 2021] Your cert is in /root/.acme.sh/hostname.midominio.com/hostname.midominio.com.cer [Wed Mar 17 21:24:40 CET 2021] Your cert key is in /root/.acme.sh/hostname.midominio.com/hostname.midominio.com.key [Wed Mar 17 21:24:40 CET 2021] The intermediate CA cert is in /root/.acme.sh/hostname.midominio.com/ca.cer [Wed Mar 17 21:24:40 CET 2021] And the full chain certs is there: /root/.acme.sh/hostname.midominio.com/fullchain.cer
acme.sh instalará por nosotros una tarea cron de verificación del estado de validez de nuestro certificado, con el fin de renovarlo cuando sea conveniente
44 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
Cloudflare nos aporta un ejemplo rápido para poder verificar que nuestro token funciona, evitando así las típicas dudas cuando programamos una interacción con una API, que nos devolverá un json con un success enverdadero.
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \ -H "Authorization: Bearer gdwbtx8e2kkkkkkkkaaaaaaaaaa8b6Ob6KT0LRuJ" \ -H "Content-Type:application/json" {"result":{"id":"13c3fede49jhkjahsdt0ef0c1a87106b1f","status":"active"},"success":true,"errors":[],"messages":[{"code":10000,"message":"This API Token is valid and active","type":null}]}
Si tenemos acceso a webmin pese a las advertencias del problema con los certificados, como ejemplo usando Opera, en el que podemos acuir a Webmin -> Webmin Configuration -> SSL Encryption y poner en
Puede ocurrir, que se nos atranque el acceso, que alguna vez puede pasar por poner algún valor inadecuado en la configuración SSL, y la única forma que nos queda es editar el fichero de configuración de Webmin, generalmente en /etc/webmin/miniserv.conf
keyfile=/home/miusuario/.acme.sh/hostname.midominio.com/hostname.midominio.com.key
certfile=/home/miusuario/.acme.sh/hostname.midominio.com/hostname.midominio.com.cer
extracas=/home/miusuario/.acme.sh/hostname.midominio.com/fullchain.cer
Tras esta acción tenemos que reiniciar el servicio webmin
$ sudo systemctl restart webmin
El alcance de este artículo, no es la seguridad, sino salir adelante con un tema que es recurrente en muchas piezas de software que tienen que ver con el ecosistema de los servidores.
He dedicado un tiempo, porque imaginé que me serviría para afrontar varios escenarios, similares en los que me he encontrado con la misma historia. Con Proxmox, su manual no me funciono, y no sólo eso sino que tuve que echar hacia atrás mis backups, porque me dejo inestable el sistema. Así, que ese es la siguiente ampliación de este artículo, ya que en el fondo pero con algunas salvedades, es casi igual.
Gracias por la imagen de portada, Samuel Zeller de Unsplash.com y a Canva por su editor
Comparte este articulo en
¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…
Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…
La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…
No es la primera vez que me encuentro con el agotamiento de la memoria en…
Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…
Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…
Ver comentarios
Hola el articulo es de 18 junio, 2019... desde entocnes ha llovido mucho.
Saludos.
Hola,
buen articulo. Pero hay una via más simple:
En el Webmin entre en la página "Webmin Configuration" en la pestaña "Let´s Encrypt"
bajo "Hostnames for certificate" su hostname(s)
bajo "Website root directory for validation file" activa "Other directory y entra el directorio de letsencrypt, que según estándar es "/etc/letsencrypt/keys".
Con éstas entras funciona directamente.
Hola Philip.
Que haces si NO PUEDES ACCEDER A WEBMIN VIA NAVEGADOR?
De eso va el articulo.
Que tengas un buen día.
Lo siento. No me expliqué bien:
En el articulo dices: "En mi caso, el dominio que estaba configurado, lo tengo en una cuenta de Cloudflare"
Mi pregunta es: Si no tengo una cuenta en CLoudflare, cómo configuro el acme.sh?
Saludos
Hola. No lo he probado en otros escenarios, pero en la pagina oficial del script acme.shtienes distintos proveedores y salidas.
Con CloudFlare necesitas usar otro sistema
Mírate este enlace.
Saludos,
Hola,
Bueno el articulo pero cómo hacerlo sin usar cloudflare?