DevSecOps

19 abr, 2017

Verificação CAA torna-se obrigatória para certificados SSL/TLS

Publicidade

Isso foi novidade para mim de algumas maneiras; primeiro, há um novo registro de recurso DNS chamado CAA (Certificate Authority Authorization) e, segundo, as Autoridades de Certificação agora precisam verificar esse registro antes de emitir um certificado, para determinar se estão autorizados a fazê-lo.

Legal!

O que é CAA (Autorização de Autoridade de Certificação)?

Em caso de dúvida, consulte o RFC: RFC 6844, Registro de Recurso da Autorização de Autoridade de Certificação (CAA) de DNS.

Em suma, ele se parece com isto:

ttias.be. CAA 0 issue "letsencrypt.org"

O registro CAA é um novo registro de recurso, próximo aos habituais registros A, CNAME, MX, TXT… que você já conhece.

A sintaxe é a seguinte;

CAA <flags> <tag> <value>

Que traduz a;

  • flag/bandeira: um inteiro não assinado entre 0-255.
  • tag: uma cadeia ASCII que representa o identificador da propriedade representada pelo registro.
  • value/valor: o valor associado à tag.

Na realidade, você verá as configurações principalmente como segue:

ttias.be. CAA 0 issue "letsencrypt.org"

-> isso significa que somente Let’s Encrypt pode emitir um certificado para o domínio “ttias.be”. Observe que isso não cobre os subdomínios, como www.

ttias.be. CAA 0 issue "letsencrypt.org"
ttias.be. CAA 0 issue "globalsign.org"

-> isso significa que tanto Let’s Encrypt quanto Globalsign podem emitir certificados para o domínio “ttias.be”.

ttias.be. CAA 0 issuewild "letsencrypt.org"

-> a tag issuewild indica que os certificados wildcat podem ser emitidos para “ttias.be”, cobrindo ” .ttias.be”, mas não “*.mail.ttias.be”.

Recebendo notificações de violações CAA

Se uma autoridade de certificação receber uma solicitação de certificado para um domínio, mas o registro CAA nega, a AC (Autoridade de Certificação) pode enviar uma notificação para o proprietário do domínio. Isso é configurado e gerenciado via tag iodef.

ttias.be.  CAA 0 iodef "mailto:m@ttias.be"

-> isso o configura, de modo que se uma AC receber uma solicitação de certificado para “ttias.be”, você será notificado em “m@ttias.be”.

ttias.be.  CAA 0 iodef "https://ma.ttias.be/callback"

-> isso o configura, de modo que uma chamada HTTPS será feita para aquela URL para informá-lo desta tentativa de solicitação de certificado. Não está claro se é um GET ou um POST ou o que a carga é, que pode depender da CA?

Consultando registros CAA

Infelizmente, isso não funciona ainda no dig, já que você obtém o registro A se você consultar um registro CAA.

$ dig google.com CAA
google.com.		143	IN	A	172.217.17.142

As versões atuais do dig não entendem o registro CAA ainda, então você precisa ser explícito e consultar o Tipo Registro de Recurso 257, o identificador dado ao CAA.

$ dig google.com type257
google.com.		86399	IN	TYPE257	\# 19 0005697373756573796D616E7465632E636F6D
google.com.		86399	IN	TYPE257	\# 15 00056973737565706B692E676F6F67

Observe como o valor não é exatamente legível? É porque ele é codificado em binário e precisa ser decodificado primeiro, para ser legível para humanos.

Atualização: a versão dig no CentOS 7 funciona muito bem.

$ dig -v
DiG 9.9.4-RedHat-9.9.4-38.el7_3.2
$ dig google.com CAA
google.com.		86400	IN	CAA	0 issue "pki.goog"
google.com.		86400	IN	CAA	0 issue "symantec.com"

Ferramentas como dnscaa fornecem essa capacidade.

$ ./digcaa google.com
google.com. 86399   IN  CAA 0 issue "symantec.com"

Suporte para registros CAA estão chegando na próxima versão do DNS Spy também.

Tenho de adicionar registos CAA para obter um certificado?

Não; assim como o HSTS, os registros CAA são completamente opcionais. Você deveria adicioná-los, para assim aumentar a segurança.

A partir de setembro de 2017, as Autoridades de Certificação são obrigadas a verificar os registros da CAA e honrar essas preferências. Não ter registros CAA é essencialmente o mesmo que dizer “todos podem emitir um certificado para o meu domínio”.

 

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/caa-checking-becomes-mandatory-ssltls-certificates/