Everybody knows that SSL is a good idea. It secures communications. At the heart of SSL is a list of certificate authorities. These are organisations that the confirm the identity of the SSL certificate. For example, if GeoTrust says that Raspberry Pi is Raspberry Pi we know that we’re talking to the right site and our communications aren’t being sniffed.
However, the list of certificate authorities is large and growing and as it stands, you’ve got to trust all of them to only issue certificates to the right people. Of course, through incompetence or malice, they can make mistakes.
CAA records are a relatively new mechanism that aims to stop this happening, making it harder to impersonate secure organisations, execute bank robberies and steal peoples’ identities.
CAA records enable you to list in your domain’s DNS the certificate authorities that are allowed to issue certificates for your domain. So, Google has a record stating that only Google and Symantec are allowed to issue certificates for google.com. If someone manages to persuade Comodo they are Google and should be issued a google.com certificate, Comodo will be obliged to reject the request based on the CAA records.
Of course, in order to be of any use, you need to be able to trust the DNS records. Fortunately, these days we have DNSSEC (dns security).
How does it work?
A typical CAA record looks something like this:
example.com. IN CAA 3600 0 issue "letsencrypt.org"
This states that only Let’s Encrypt may issue certificates for example.com or its subdomains, such as www.example.com.
Going through each part in turn:
example.com– the name of the hostname to which the record apply. In our DNS interface, you can use a hostname of “@” to refer to your domain.
IN CAA– the record type.
3600– the “time to live” (TTL). The amount of time, in seconds, for which this record may be cached.
0– any CAA flags
issue– the type of property defined by this record (see below)
"letsencrypt.org"– the value of the property
At present, there are three defined property types:
- issue – specifies which authorities may issue certificates of any type for this hostname
- issuewild – specifies which authorities may issue wildcard certificates for this hostname
- iodef – provides a URL for authorities to contact in the event of an attempt to issue an unauthorised certificate
CAA records can be added using the new section at the bottom of the DNS management page in our control panel:
@ in the first field denotes a record that applies to the domain itself.
At Mythic Beasts, we’re a bit skeptical about the value of CAA records. In order to protect against the incompetence of CAs, they rely on CAs competently checking the CAA records before issuing certificates. That said, they do provide a straightforward check that CAs can build into their automated processes to detect and reject unauthorised requests, so publishing CAA records will raise the bar somewhat for anyone looking to fraudulently obtain a certificate for your domain.