DNS Certification Authority Authorization (CAA)

Hi All,

Do you know the Certification Authority Authorization (CAA) DNS Records?

With these Records you can control what CA can issue Certificates for your domain.

CAA implementation mandatory for all certificate authorities by September 2017.

That Record means no CA is allowed to issue Certificates and Wildcard Certifcates for that Domain

domain.tld.  IN  CAA  0 issue ";"
domain.tld.  IN  CAA  0 issuewild ";"

Only the specified CA can Issue Certificates and Wildcard Certifcates for that Domain

domain.tld.  IN  CAA 0 issue "ca.domain.tld"
domain.tld.  IN  CAA 0 issuewild "ca.domain.tld"

To indicate that certificate authorities should report invalid certificate requests to an email address and a Real-time Inter-network Defense endpoint:

domain.tld.  IN  CAA 0 iodef "mailto:security@example.com"
domain.tld.  IN  CAA 0 iodef "http://iodef.example.com/"

How to query CAA DNS Record with PowerShell (DNS over HTTPS)

$Domain = "irgendwoiminternet.ch"
$json = Invoke-RestMethod -URI "https://dns.google/resolve?name=$Domain&type=CAA"
$json
$json.Answer
$json.Answer.Data

I’ve created a CAA Record in Azure DNS for one of my Domains

Prohibit Issue Certificates for that Domain

I’ve created a Certificate Request with �osh-ACME to the Let’s Encrypt CA. As you can see the Certificate is not issued due to the CAA Record.

Install-Module Posh-ACME
Set-PAServer LE_PROD
New-PAAccount -Contact a.bohren@icewolf.ch -AcceptTOS -KeyLenght 4096
New-PACertificate edge.serveralive.ch -AcceptTOS -Contact "a.bohren@icewolf.ch" -DnsSleep 15

Let’s change the CAA Record

The CAA Record now looks like this.

irgendwoiminternet.ch. IN 0 issue "letsencrypt.org"
irgendwoiminternet.ch. IN 0 issuewild ";"
irgendwoiminternet.ch. IN 0 iodef "mailto:postmaster@icewolf.ch"

The only question is where do you get the CAA URL for your CA?

I just googled it:https://letsencrypt.org/docs/caa/

Qquery CAA DNS Record with PowerShell (DNS over HTTPS)

$Domain = "irgendwoiminternet.ch"
$json = Invoke-RestMethod -URI "https://dns.google/resolve?name=$Domain&type=CAA"
$json
$json.Answer
$json.Answer.Data

Now i am able to issue the Certificate from Let’s encrypt

New-PACertificate edge.serveralive.ch -AcceptTOS -Contact "a.bohren@icewolf.ch" -DnsSleep 15

The Certificate can be found here: C:\Users\Administrator.CORP\AppData\Local\Posh-ACME\LE_PROD\901745977\demo.irgendwoiminternet.ch

Regards
Andres Bohren