Presentamos PostScale -- API de correo para envíos transaccionales, recepción y direcciones enmascaradas. PostScale

    Qué es un registro TLSA

    Aprende cómo los registros TLSA habilitan DANE para la autenticación de certificados, proporcionando una alternativa a la validación CA tradicional. Incluye ejemplos para el panel de DNScale y la API.

    Un registro TLSA (Transport Layer Security Authentication) asocia un certificado TLS de servidor o clave pública con un nombre de dominio, habilitando DANE (DNS-based Authentication of Named Entities). Los registros TLSA proporcionan una alternativa o complemento a la validación tradicional mediante Autoridad de Certificación.

    Cómo funcionan los registros TLSA

    Los registros TLSA especifican qué certificado o clave debe esperar un cliente al conectarse vía TLS:

    _443._tcp.example.com.    3600    TLSA    3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Esto indica a los clientes: "Al conectar con example.com en el puerto 443 vía TCP, espera un certificado que coincida con este hash SHA-256."

    Componentes del registro

    ComponenteCampoDescripción
    Nombre_puerto._protocolo.dominio_443._tcp.example.com
    UsoTipo de uso de certificado0, 1, 2 o 3
    SelectorQué comparar0 (certificado completo) o 1 (clave pública)
    Tipo de coincidenciaAlgoritmo hash0 (exacto), 1 (SHA-256), 2 (SHA-512)
    Datos del certificadoHash o certificadoDatos codificados en hexadecimal

    Valores de uso

    ValorNombreDescripción
    0PKIX-TADebe encadenar a la CA especificada + pasar validación PKIX
    1PKIX-EEEl certificado de entidad final debe coincidir + pasar validación PKIX
    2DANE-TADebe encadenar al ancla de confianza especificada (sin PKIX)
    3DANE-EEEl certificado de entidad final debe coincidir exactamente (sin PKIX)

    Valores de selector

    ValorNombreDescripción
    0CertCoincidir con certificado completo
    1SPKICoincidir con SubjectPublicKeyInfo (solo clave pública)

    Valores de tipo de coincidencia

    ValorNombreDescripción
    0CompletoCoincidencia exacta (datos completos, sin hash)
    1SHA-256Hash SHA-256 de los datos seleccionados
    2SHA-512Hash SHA-512 de los datos seleccionados

    Casos de uso comunes

    Servidor web DANE-EE (Recomendado)

    Validación auto-firmada mediante DNS:

    _443._tcp.example.com.    3600    TLSA    3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Uso 3 + Selector 1 + SHA-256 es la configuración más común.

    Servidor de correo (SMTP)

    Entrega segura de correo con DANE:

    _25._tcp.mail.example.com.      3600    TLSA    3 1 1 abc123...
    _465._tcp.mail.example.com.     3600    TLSA    3 1 1 abc123...
    _587._tcp.mail.example.com.     3600    TLSA    3 1 1 abc123...

    Servidor XMPP

    _5222._tcp.xmpp.example.com.    3600    TLSA    3 1 1 def456...
    _5269._tcp.xmpp.example.com.    3600    TLSA    3 1 1 def456...

    Múltiples certificados (Rotación)

    Durante la renovación de certificados:

    _443._tcp.example.com.    3600    TLSA    3 1 1 oldcerthash...
    _443._tcp.example.com.    3600    TLSA    3 1 1 newcerthash...

    Formato del registro

    CampoDescripciónEjemplo
    Nombre_puerto._protocolo.dominio_443._tcp.example.com
    TipoTipo de registroTLSA
    UsoUso del certificado3
    SelectorDatos a comparar1
    Tipo de coincidenciaTipo de hash1
    Datos del certificadoHash (hex)e3b0c44...
    TTLTiempo de vida (segundos)3600

    Generar datos TLSA

    Usando OpenSSL

    Obtener hash SHA-256 de clave pública (selector=1, matching=1):

    # Desde archivo de certificado
    openssl x509 -in cert.pem -noout -pubkey | \
      openssl pkey -pubin -outform DER | \
      openssl dgst -sha256 -binary | \
      xxd -p -c 256
     
    # Desde servidor en producción
    echo | openssl s_client -connect example.com:443 2>/dev/null | \
      openssl x509 -noout -pubkey | \
      openssl pkey -pubin -outform DER | \
      openssl dgst -sha256 -binary | \
      xxd -p -c 256

    Obtener hash SHA-256 del certificado completo (selector=0, matching=1):

    openssl x509 -in cert.pem -outform DER | \
      openssl dgst -sha256 -binary | \
      xxd -p -c 256

    Usando ldns-dane

    ldns-dane create example.com 443 3 1 1

    Añadir un registro TLSA

    Usando el panel de control

    1. Navega a tu zona en el panel de DNScale
    2. Haz clic en Add Record
    3. Configura el registro:
      • Name: Introduce _443._tcp (o el puerto/protocolo apropiado)
      • Type: Selecciona TLSA
      • Usage: Selecciona el uso del certificado (0-3)
      • Selector: Elige Certificado completo (0) o Clave pública (1)
      • Matching Type: Elige SHA-256 (1) o SHA-512 (2)
      • Certificate Data: Introduce el hash codificado en hexadecimal
      • TTL: Establece la duración de caché (por defecto: 3600)
    4. Haz clic en Create Record

    Usando la API

    Crear un registro TLSA:

    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_443._tcp",
        "type": "TLSA",
        "content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "ttl": 3600
      }'

    Crear TLSA para servidor de correo:

    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_25._tcp.mail",
        "type": "TLSA",
        "content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "ttl": 3600
      }'

    Respuesta de la API:

    {
      "status": "success",
      "data": {
        "message": "Record created successfully",
        "record": {
          "id": "encoded-record-id",
          "name": "_443._tcp.example.com.",
          "type": "TLSA",
          "content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
          "ttl": 3600,
          "disabled": false
        }
      }
    }

    Requisitos de DANE

    Para que DANE funcione, tu zona debe:

    1. Estar firmada con DNSSEC - Los registros TLSA sin DNSSEC no proporcionan beneficio de seguridad
    2. Tener registros TLSA correctos - El hash debe coincidir con el certificado/clave real
    3. Actualizar registros durante la rotación de certificados - Añadir el nuevo hash antes de desplegar el nuevo certificado

    Proceso de rotación de certificados

    1. Generar nuevo certificado
    2. Añadir registro TLSA para el hash del nuevo certificado
    3. Esperar la propagación DNS (al menos la duración del TTL)
    4. Desplegar nuevo certificado en el servidor
    5. Eliminar registro TLSA antiguo
    # Paso 2: Añadir nuevo hash manteniendo el antiguo
    _443._tcp.example.com.    3600    TLSA    3 1 1 oldhash...
    _443._tcp.example.com.    3600    TLSA    3 1 1 newhash...
     
    # Paso 5: Eliminar hash antiguo
    _443._tcp.example.com.    3600    TLSA    3 1 1 newhash...

    Mejores prácticas

    1. Usar DANE-EE (uso 3) - La más sencilla y comúnmente desplegada

    2. Usar selector 1 (SPKI) - Sobrevive a la renovación de certificados si se reutiliza la clave

    3. Usar SHA-256 (tipo de coincidencia 1) - Estándar y ampliamente soportado

    4. Publicar antes de desplegar - Añadir registros TLSA antes de desplegar nuevos certificados

    5. Habilitar DNSSEC primero - TLSA sin DNSSEC es inseguro

    6. Mantener múltiples registros durante la rotación - Prevenir interrupciones del servicio

    Probar registros TLSA

    # Consultar registro TLSA
    dig TLSA _443._tcp.example.com
     
    # Verificar con ldns
    ldns-dane verify example.com 443
     
    # Herramientas online
    # - https://dane.sys4.de/
    # - https://internet.nl/

    Tipos de registro relacionados

    • CAA - Autorización de autoridad de certificación
    • TXT - Verificación de dominio
    • SSHFP - Huellas digitales SSH (concepto similar)

    Conclusión

    Los registros TLSA habilitan DANE, proporcionando validación de certificados basada en DNS que puede complementar o reemplazar la verificación CA tradicional. Combinados con DNSSEC, los registros TLSA ofrecen una protección sólida contra ataques de intermediario (man-in-the-middle). La interfaz intuitiva de DNScale facilita la configuración de registros TLSA, con campos dedicados para los parámetros de uso, selector y tipo de coincidencia.