Skip to content

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.

  1. 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
    Instalando certbot con apt
  2. Preparar la Estructura de Directorios Crearemos una estructura de carpetas organizada para mantener nuestros archivos de certificados ordenados.

    Terminal window
    mkdir -p ~/certs/inventory
    cd ~/certs/inventory
    touch inventory.cnf
    Creando la estructura de directorios para los certificados
  3. 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.cnf

    Pega el siguiente contenido, personalizando los datos de distinguished_name con tu información:

    [req]
    default_bits = 2048
    prompt = no
    default_md = sha256
    req_extensions = req_ext
    distinguished_name = dn
    [dn]
    C = CO
    ST = Bogota
    L = Puente Aranda
    O = codedesignplus
    OU = IT
    CN = *.codedesignplus.app
    [req_ext]
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = *.codedesignplus.app
    DNS.2 = codedesignplus.app

    La 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 *).

    Editando el archivo de configuración de OpenSSL
  4. 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
    Generando la clave privada con OpenSSL
  5. 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
    Creando la solicitud de firma de certificado (CSR)
  6. 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.cnf
    chmod 600 inventory.key
    ls -la
    Ajustando los permisos de los archivos generados

Ahora empieza la interacción con Let’s Encrypt. Este es un proceso manual que requiere paciencia.

  1. 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.
  2. 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.

    Primer desafío DNS-01 presentado por Certbot
  3. 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...).
    Creando el primer registro TXT en GoDaddy Registro TXT creado y listado
  4. 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.

    Verificando el registro TXT con Google Dig Verificando el registro TXT con DNSChecker
  5. 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.

    Continuando el proceso en la terminal

    ¡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.

  6. 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.

    Editando el registro TXT con el segundo valor Segundo registro TXT guardado Verificando el segundo valor con Google Dig Verificando el segundo valor con DNSChecker Verificando el segundo valor con DNSChecker (2) Verificando el segundo valor con Google Dig (2)

    Lamentablemente, en nuestro caso, el segundo intento también falló por la misma razón.

    Segundo intento fallido de validación
  7. 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...).

    Tercer desafío de Certbot

    Actualizamos el registro TXT en GoDaddy por tercera vez, esperamos unos minutos extra para asegurar una buena propagación y verificamos de nuevo.

    Editando el registro TXT por tercera vez Verificando el tercer valor con Google Dig

    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.

    Certificado generado exitosamente por Let's Encrypt

¡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.