CAA (Certification Authority Authorization)レコードのチェックが2017年9月8日から必須になるみたい
ちょっと調べてみる
DANEはクライアント用でこっちはCA用のレコードらしい
例えばこんな感じのCAAレコードを書いて Let’s Encryptで発行しようとすると
こんなエラーが返される
;; ANSWER SECTION:
yaasita.tk. 60 IN CAA 0 issue "comodoca.com"
yaasita.tk. 60 IN CAA 0 issuewild "\;"
yaasita.tk. 60 IN CAA 0 iodef "mailto:alert@yaasita.net"
この場合、hoge.yaasita.tk. みたなサブドメインもcomodocaでしか発行できなくなる
(設定はサブドメインに継承される)
ただし、上書きは可能なのでCAAを以下のようにすればLet’s Encryptだけから発行できるように変わる
hoge IN CAA 0 issue "letsencrypt.org"
hoge IN CAA 0 issuewild ";"
hoge IN CAA 0 iodef "mailto:alert@yaasita.net"
例えば、google.com のCAAは以下のようになっているので、Google Trust Servicesおよびsymantecからしか発行できない
仮に drive.google.com のwebrootに任意のファイルを置ける脆弱性があったとしても(http-01で)Let’s Encryptの証明書を発行することはできないし、WoSignで偽の証明書を発行されることもない
(WoSignがCAA無視してたら意味ないけど)
google.com. 84592 IN CAA 0 issue "pki.goog"
google.com. 84592 IN CAA 0 issue "symantec.com"
という訳で、どっかのCAが事故って発行されるリスクも減らせるし自分が信頼するCAを表明しておくのは悪くないんじゃないかなー
(CTログは発見は出来るけど予防はできないので)
ただ現時点で対応してるDNSサーバ少ない気がする(Google Cloud DNSは対応してたけど、AWS Route53は対応してなかった)
iodefについてはLet’s Encryptはまだ対応してないぽい
iodefに対応してくれないと面白くないけどまあしょうがないか