Por que usar um validador offline
Um registro TLSA mal formado é ignorado sem aviso pelos MTAs conformes. Você acredita que seu deploy DANE protege seu fluxo SMTP de entrada; na prática, nenhum servidor emissor verifica nada. A falha é silenciosa até a próxima auditoria, ou até um incidente de entrega que exponha a brecha.
O validador de sintaxe DANE TLSA analisa seu registro sem publicar nem consultar o DNS. Nenhum dado sai do seu navegador, nenhum sinal vaza para um resolver externo. Essa abordagem offline cobre quatro casos de uso que a auditoria em tempo real não consegue tratar.
Casos de uso típicos:
- Antes do deploy: validar um rascunho antes da publicação no DNS, para evitar um registro silenciosamente ignorado.
- Saída de gerador: verificar a sintaxe de um registro produzido por uma ferramenta de terceiros, um wiki interno ou um modelo compartilhado.
- Depuração offline: reproduzir e corrigir um erro sem mexer no DNS público, por exemplo em pré-produção.
- Revisão de configuração: examinar um registro recebido de um parceiro ou exportado de uma infraestrutura cliente antes de aplicá-lo.
O validador aplica a especificação RFC 6698 sobre a estrutura e a RFC 7671 sobre as restrições operacionais. Nenhuma consulta DNS, nenhuma conexão externa.
Como usar este validador em 3 passos
Passo 1: colar o registro TLSA
Copie o valor do seu registro no campo previsto:
3 1 1 2bb183af2e2b295b444c1fd4072f2b59a8c1c9abf7f3f1e9b0d4c7e8f1a2b3c4
Você também pode colar a linha completa com o owner name:
_25._tcp.mail.captaindns.com. IN TLSA 3 1 1 2bb183af...
O validador extrai os quatro campos e analisa cada um de forma independente. Nenhuma conexão de rede é feita nesta etapa.
Passo 2: ler o veredicto
Os resultados são classificados por gravidade:
- Erro: problema bloqueante, o registro será ignorado ou rejeitado pelos MTAs conformes
- Aviso: combinação não recomendada, funcional mas que expõe a riscos operacionais
- Válido: sintaxe conforme as RFC 6698 e 7671
Cada mensagem inclui o campo afetado, o valor inválido e a correção esperada.
Passo 3: corrigir antes da publicação
Ajuste seu registro conforme as recomendações. Quando a sintaxe estiver limpa, publique o TXT em _25._tcp.<host-mx> na zona assinada por DNSSEC do host MX, aguarde a propagação e confirme em tempo real com o DANE TLSA Checker.
Validador ou verificador: quando usar cada ferramenta
As duas ferramentas são complementares. Atuam em momentos diferentes do ciclo de vida de um registro TLSA.
| Dimensão | Validador (esta ferramenta) | Verificador |
|---|---|---|
| Momento de uso | Antes da publicação no DNS | Após a publicação |
| Resolução DNS | Nenhuma | Resolução _25._tcp.<mx> em tempo real |
| Verificação DNSSEC | Não | Sim, cadeia completa |
| Comparação do certificado em tempo real | Não | Sim, via STARTTLS na porta 25 |
| Origem do registro | Manual (colado) | DNS público |
| Dados enviados ao servidor | Nenhum | Domínio analisado |
Fluxo de trabalho recomendado:
- Projete ou gere o registro e use o validador para verificar a sintaxe
- Publique o TXT na zona DNSSEC do host MX e aguarde a propagação
- Lance o verificador para confirmar DNSSEC e a correspondência do certificado em tempo real
O validador detecta erros de entrada antes da publicação. O verificador detecta desvios e confirma que o DNS público servido corresponde ao certificado atualmente apresentado via STARTTLS.
Anatomia de um registro TLSA
O registro TLSA contém quatro campos rigorosamente especificados.
Estrutura geral
_25._tcp.mail.captaindns.com. IN TLSA <usage> <selector> <matching> <dados>
| Campo | Valores | Descrição |
|---|---|---|
| Usage | 0-3 | Ancoragem de confiança |
| Selector | 0-1 | Parte do certificado hasheada |
| Matching type | 0-2 | Algoritmo de comparação |
| Dados | hex | Hash ou bloco binário |
Usage (campo 1)
| Valor | Nome | Descrição |
|---|---|---|
| 0 | PKIX-TA | Restrição CA: o certificado deve ser assinado por esta CA E passar na validação PKIX |
| 1 | PKIX-EE | Restrição de certificado: correspondência exata + validação PKIX |
| 2 | DANE-TA | Ancoragem de confiança: qualquer certificado assinado por esta CA é aceito |
| 3 | DANE-EE | Certificado de domínio: correspondência exata, sem validação PKIX |
Recomendação para SMTP: DANE-EE (3). A ancoragem está na sua chave, independentemente de qualquer autoridade externa.
Selector (campo 2)
| Valor | Nome | Descrição |
|---|---|---|
| 0 | Cert | Certificado completo (DER) |
| 1 | SPKI | SubjectPublicKeyInfo (somente chave pública) |
Recomendação: SPKI (1). O registro continua válido enquanto a chave pública for preservada, independentemente das renovações de certificado.
Matching type (campo 3)
| Valor | Nome | Comprimento hex esperado |
|---|---|---|
| 0 | Full | Variável (certificado ou chave brutos) |
| 1 | SHA-256 | 64 caracteres (32 bytes) |
| 2 | SHA-512 | 128 caracteres (64 bytes) |
Recomendação: SHA-256 (1). Suportado universalmente, suficientemente robusto, compacto.
A combinação recomendada para SMTP
3 1 1 é o padrão de fato para SMTP DANE.
3 1 1 <sha256-da-spki>
- Usage 3 (DANE-EE): sem dependência de uma CA, ancoragem direta na sua chave
- Selector 1 (SPKI): invariante à renovação de certificado enquanto a chave for preservada
- Matching type 1 (SHA-256): 32 bytes, perfeitamente adequado
As outras combinações são possíveis, mas desaconselhadas:
| Combinação | Status | Por quê |
|---|---|---|
| 3 1 1 | Recomendada | Padrão SMTP, robusto, invariante às renovações |
| 3 0 1 | Tolerada | Hash sobre o certificado completo, muda a cada renovação |
| 2 0 1 | Aceitável | DANE-TA sobre CA, sem atualização DNS na renovação |
| 2 1 1 | Aceitável | DANE-TA sobre SPKI da CA |
| 3 1 0 | Recusada | Matching type 0 expõe o certificado bruto, tamanho DNS enorme |
| 1 x x | Recusada em SMTP | PKIX-EE raramente implantável em MTAs |
| 0 x x | Recusada em SMTP | PKIX-TA inadequada para SMTP |
O validador sinaliza explicitamente as combinações fora de recomendação e propõe a combinação padrão.
Erros de sintaxe comuns e correções
Usage fora do intervalo
Causa: valor de usage maior que 3.
Correção:
- 4 1 1 2bb183af...
+ 3 1 1 2bb183af...
Selector inválido
Causa: selector diferente de 0 ou 1.
Correção:
- 3 2 1 2bb183af...
+ 3 1 1 2bb183af...
Matching type fora do intervalo
Causa: matching type maior que 2.
Correção:
- 3 1 3 2bb183af...
+ 3 1 1 2bb183af...
Dados hexadecimais inválidos
Causa: caracteres fora do intervalo hex (0-9, a-f, A-F).
Correção:
- 3 1 1 2bg183zf...
+ 3 1 1 2bb183af...
Comprimento de hash incorreto
Causa: o comprimento dos dados não corresponde ao matching type.
Correção SHA-256:
- 3 1 1 2bb183
+ 3 1 1 2bb183af2e2b295b444c1fd4072f2b59a8c1c9abf7f3f1e9b0d4c7e8f1a2b3c4
SHA-256 (matching type 1) exige exatamente 64 caracteres hex. SHA-512 (matching type 2) exige exatamente 128 caracteres.
Combinação usage/selector frágil
Causa: DANE-EE (3) + Cert completo (0) gera um hash que muda a cada renovação de certificado.
Correção recomendada: passar para SPKI (1) para tornar o registro invariante às renovações (com a opção --reuse-key no lado ACME).
- 3 0 1 <hash-do-certificado-completo>
+ 3 1 1 <hash-da-chave-publica>
Owner name incorreto
Causa: registro publicado no apex do domínio em vez do host MX, ou na porta errada.
Correção: _25._tcp.<host-mx> exatamente. Para um MX mail.captaindns.com, é _25._tcp.mail.captaindns.com.
Preparar uma rotação de chave
Vários registros TLSA na mesma zona não são um erro: é até o padrão recomendado para uma rotação de chave sem interrupção.
Procedimento de rotação limpa
- D-7: gere a próxima chave, calcule seu hash SPKI e publique-o em duplicidade:
_25._tcp.mail.captaindns.com. IN TLSA 3 1 1 <hash-chave-atual>
_25._tcp.mail.captaindns.com. IN TLSA 3 1 1 <hash-chave-seguinte>
-
D-0: execute a rotação de certificado com a nova chave. Os MTAs conformes aceitam a conexão se pelo menos um dos dois registros corresponder ao certificado apresentado.
-
D+7 (ou o dobro do TTL): remova o registro antigo. A rotação está concluída.
O que o validador verifica
O validador trata cada registro de forma independente e confirma que:
- Cada hash respeita o comprimento esperado pelo seu matching type
- Nenhum campo sai dos intervalos válidos
- As combinações permanecem dentro das recomendações
Um registro em duplicidade nunca é sinalizado como erro quando os dois são sintaticamente corretos.
DANE e MTA-STS: abordagens complementares
| Critério | DANE | MTA-STS |
|---|---|---|
| Mecanismo | DNSSEC + registro TLSA | HTTPS + política em texto |
| Dependência | DNSSEC necessário | HTTPS necessário |
| Confiança | Criptográfica (DNS assinado) | PKI (CA HTTPS) |
| Suporte Postfix / Exim | Excelente | Bom |
| Suporte Microsoft 365 / Google Workspace | Parcial a inexistente | Completo |
| Deploy | Complexo (DNSSEC) | Mais simples |
Recomendação: não escolha, implante os dois. Valide seu registro TLSA aqui e publique também uma política MTA-STS. A cobertura máxima impõe a combinação.
Ferramentas complementares e recursos
| Ferramenta | Quando usar |
|---|---|
| DANE TLSA Checker | Auditoria em tempo real do registro publicado no DNS, com validação DNSSEC e correspondência de certificado |
| Gerador DANE TLSA | Criar um registro TLSA a partir de um certificado ou de uma chave pública |
| Validador sintaxe MTA-STS | Validar a política MTA-STS associada offline |
| Validador sintaxe TLS-RPT | Validar o registro TLS-RPT associado offline |
| Auditoria email-authentication | Visão geral das ferramentas de autenticação de e-mail |
Guias relacionados
- DANE TLSA: o guia completo - Entender DANE de ponta a ponta, do DNSSEC ao deploy SMTP.
- DANE TLSA em Postfix, BIND e Let's Encrypt - Instalação passo a passo com rotação de chave.
- DANE TLSA e Microsoft 365 Exchange Online - Suporte de DANE de entrada e saída no Exchange Online.
- DANE TLSA, troubleshooting: 12 casos práticos - Diagnóstico e resolução de incidentes DANE.
- MTA-STS vs DANE: comparativo detalhado - Escolher ou combinar os dois protocolos.
Especificações
- RFC 6698 - DANE TLSA (especificação original)
- RFC 7671 - Updates to DANE (esclarecimentos operacionais)
- RFC 7672 - SMTP Security via DANE (DANE para SMTP)