Certificados Wildcard con Let's Encrypt y GoDaddy
Asegurar un sitio web con HTTPS es fundamental, pero gestionar certificados para múltiples subdominios puede ser una tarea compleja. La solución más eficiente es un certificado wildcard, que asegura tu dominio principal (ej. example.com
) y todos sus subdominios (*.example.com
) con una sola configuración.
En esta guía visual, te mostraremos cómo generar un certificado wildcard gratuito de la autoridad certificadora Let’s Encrypt utilizando su herramienta oficial, certbot
. Para probar que somos los dueños del dominio, usaremos el método de validación DNS-01, que consiste en crear un registro TXT temporal en nuestro proveedor de DNS, que en este caso será GoDaddy.
Parte 1: Preparación del Servidor
Section titled “Parte 1: Preparación del Servidor”-
Instalar Certbot Primero, nos conectamos a nuestro servidor Linux (en este caso, Ubuntu) por SSH e instalamos
certbot
.Terminal window sudo apt install certbot -y -
Preparar la Estructura de Directorios Crearemos una estructura de carpetas organizada para mantener nuestros archivos de certificados ordenados.
Terminal window mkdir -p ~/certs/inventorycd ~/certs/inventorytouch inventory.cnf -
Crear el Archivo de Configuración de OpenSSL Crearemos un archivo de configuración (
inventory.cnf
) que le dirá a OpenSSL qué información incluir en nuestra solicitud de certificado.Terminal window nano inventory.cnfPega el siguiente contenido, personalizando los datos de
distinguished_name
con tu información:[req]default_bits = 2048prompt = nodefault_md = sha256req_extensions = req_extdistinguished_name = dn[dn]C = COST = BogotaL = Puente ArandaO = codedesignplusOU = ITCN = *.codedesignplus.app[req_ext]subjectAltName = @alt_names[alt_names]DNS.1 = *.codedesignplus.appDNS.2 = codedesignplus.appLa sección
alt_names
es crucial: aquí definimos que el certificado debe ser válido para el dominio raíz y para cualquier subdominio (el wildcard*
). -
Generar la Clave Privada Creamos la clave privada que se asociará con nuestro certificado. Esta debe mantenerse segura y secreta.
Terminal window openssl genrsa -out inventory.key 2048 -
Crear la Solicitud de Firma de Certificado (CSR) El CSR es un archivo que contiene nuestra información y nuestra clave pública. Se lo enviaremos a Let’s Encrypt para que lo firme y genere el certificado.
Terminal window openssl req -new -key inventory.key -out inventory.csr -config inventory.cnf -
Ajustar Permisos de Archivos Por seguridad, restringimos los permisos de nuestra clave privada para que solo el propietario pueda leerla.
Terminal window chmod 644 inventory.cnfchmod 600 inventory.keyls -la
Parte 2: El Desafío DNS-01 con Certbot
Section titled “Parte 2: El Desafío DNS-01 con Certbot”Ahora empieza la interacción con Let’s Encrypt. Este es un proceso manual que requiere paciencia.
-
Ejecutar Certbot en Modo Manual Ejecutamos el siguiente comando para iniciar el proceso de validación.
Terminal window sudo certbot certonly --manual --preferred-challenges dns --csr inventory.csr -d "*.codedesignplus.app" -d "codedesignplus.app"--manual
: Indica que realizaremos los pasos de validación nosotros mismos.--preferred-challenges dns
: Especifica que usaremos el método de validación por DNS.--csr
: Le pasamos nuestra solicitud de firma.
-
El Primer Desafío Certbot nos pedirá nuestro email y que aceptemos los términos. Luego, se detendrá y nos mostrará un valor TXT que debemos desplegar en nuestro DNS.
-
Crear el Registro TXT en GoDaddy Vamos a nuestro panel de DNS en GoDaddy y creamos un nuevo registro TXT con los datos que nos dio Certbot:
- Tipo:
TXT
- Nombre:
_acme-challenge
- Valor: El valor largo y aleatorio proporcionado (en este caso, empieza con
c89wBe5u...
).
- Tipo:
-
Verificar la Propagación del DNS Este es el paso más importante y donde la paciencia es clave. Usamos herramientas como Google Admin Toolbox (Dig) y DNSChecker.org para confirmar que el nuevo registro TXT es visible en Internet.
-
El Intento (y el Fallo) Una vez que las herramientas de verificación muestran el registro, volvemos a la terminal y presionamos Enter para que Certbot continúe.
¡Falló! Como se ve en la imagen, Certbot no pudo encontrar el registro TXT. Esto es extremadamente común. La propagación del DNS no fue lo suficientemente rápida.
-
Segundo Intento y Segundo Fallo Certbot nos da la opción de intentarlo de nuevo. Al hacerlo, nos proporciona un NUEVO valor TXT (empieza con
LO_94SHS7...
). Repetimos el proceso: editamos el registro TXT en GoDaddy con el nuevo valor, guardamos, y esperamos pacientemente verificando con las herramientas de DNS.Lamentablemente, en nuestro caso, el segundo intento también falló por la misma razón.
-
Tercer Intento: ¡El Éxito! La tercera es la vencida. Repetimos el proceso una vez más. Certbot nos da un tercer valor TXT (empieza con
YQETC-Lj...
).Actualizamos el registro TXT en GoDaddy por tercera vez, esperamos unos minutos extra para asegurar una buena propagación y verificamos de nuevo.
Volvemos a la terminal, cruzamos los dedos y presionamos Enter…
¡ÉXITO! Finalmente, Let’s Encrypt pudo verificar el registro TXT y procedió a firmar y emitir nuestro certificado.
Conclusión
Section titled “Conclusión”¡Lo has conseguido! A pesar de los desafíos de la propagación de DNS, has generado con éxito un certificado TLS/SSL wildcard de Let’s Encrypt para tu dominio gestionado en GoDaddy. Ahora posees los archivos (cert.pem
, chain.pem
, fullchain.pem
, y tu inventory.key
) necesarios para asegurar cualquier servicio web.
Este proceso, aunque a veces tedioso, es fundamental para la seguridad en Internet. Has aprendido una lección valiosa sobre la paciencia y la verificación en el mundo del DNS. Ahora estás listo para usar estos archivos para habilitar HTTPS en tus servidores web, balanceadores de carga o, como en nuestra serie principal, en un Gateway de Istio.