If I understand correctly, Certification Authority Authorization DNS records are used to specify which certificate authorities are allowed to issue certificates for a given domain. If that record exists and a CA is not listed on it, that CA must refuse to issue a certificate for the domain.

However, this doesn't seem to protect against vulnerabilities in the CA. If any trusted authority doesn't implement CAA properly, or if an authority's private keys are breached, then CAA doesn't help.

My question is, why don't browsers check CAA records? If the certificate given was not issued by a CA authorized in the record, then it would consider the certificate invalid. This would greatly increase security by reducing the list CAs that must be trusted to only the ones the website owner chooses to trust.

I understand that HPKP is also used to prevent bad certificates. However, it only works with HTTP, and it requires either trusting the first certificate received for a site, or trusting a third-party preload list.

So is this something that browsers could implement, or am I missing something here?


I just found the answer in RFC 6844, DNS Certification Authority Authorization (CAA) Resource Record:

A set of CAA records describes only current grants of authority to issue certificates for the corresponding DNS domain. Since a certificate is typically valid for at least a year, it is possible that a certificate that is not conformant with the CAA records currently published was conformant with the CAA records published at the time that the certificate was issued. Relying Applications MUST NOT use CAA records as part of certificate validation. [emphasis mine]

Basically, it is not the purpose of CAA to describe which certificates are currently valid for a domain. If a certificate is issued when the CA is on the record, and the record is later removed, then the certificate should remain valid until it expires (or is revoked).

Validation of certificates in the browser (or Relying Application) through DNS appears to be the purpose of DANE, or DNS-Based Authentication of Named Entities, specified in RFC 6698. Unfortunately, DANE is not widely implemented.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.