DNS CAAをRoute53で登録してみる

いつの間にかTLS1.3 Readyな世界でTLS1.3を調べている途中に出会ったDNS CAAAmazon Route 53 now supports CAA recordsによるとRoute 53ででもCAAがサポートされたと言うことなので実際入れてみる。

DNS CAAとはによると

ドメインの管理者がDNSのCAA (Certification Authority Authorization) レコードを利用し、ドメイン名とサブドメインに対して証明書を発行できる認証局 (CA) を指定できます。

ドメイン管理者(DNSの変更する権限のある人)がどこの証明書を使えと明示的に宣言できるという認識です。
2017年9月から証明書発行時に確認されるようになるなんていう話もあるのでDNS側としては対応しておいた方がいいんでしょうね。

現状

CAAは普及していないっぽい。ざっとドメインを調べたけどCAAが登録されていたのはgoogle.comとsymantec.comぐらいでした。

> dig caa google.com

; <<>> DiG 9.9.7-P3 <<>> caa google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43610 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN CAA ;; ANSWER SECTION: google.com. 86400 IN CAA 0 issue "symantec.com
google.com. 86400 IN CAA 0 issue “pki.goog

;; Query time: 114 msec
;; SERVER: 192.168.179.1#53(192.168.179.1)
;; WHEN: Tue Aug 22 15:35:23 JST 2017
;; MSG SIZE rcvd: 86

yahoo.co.jpとかssllabs.comとか、youtube.comとかは未登録でした。
普及率かなり低いんじゃないかなぁ〜

まぁ使えるようになったので登録しておく。

登録

Route53で登録してみます。
でもそのレコードを作るのはCAA Record Generatorで作成してみます。
実際私のサーバはLet’s Encryptで証明書を発行しているので選択

DNSにはStandard BIND Zone Fileにでてきた結果を登録したらOK

casper.barasu.org. IN CAA 0 issue “letsencrypt.org”
casper.barasu.org. IN CAA 0 issuewild “;”
casper.barasu.org. IN CAA 0 iodef “mailto:asuma@barasu.org”

さっさとACM (AWS Certificate Manager)も対応して欲しいなぁ。そしたらwww.barasu.orgのCAAも登録するのに。

  • issue そのリソースレコード名の証明書を発行できる証明局を値に書く。
  • issuewild そのリソースレコード名に*をつけたワイルドカード証明書を発行できる証明局を値に書く
  • iodef 証明書を発行できかった場合に連絡する通知先

ということらしいです。

登録に関しましてはRoute 53 が CAA レコードに対応しました!を参考にすると楽でいいです。
というかクラスメソッドさんテスト早すぎ!!!

確認

コマンドラインからの確認

> dig caa casper.barasu.org +noall +answer

; <<>> DiG 9.9.7-P3 <<>> caa casper.barasu.org +noall +answer
;; global options: +cmd
casper.barasu.org. 300 IN CAA 0 iodef “mailto:asuma@barasu.org”
casper.barasu.org. 300 IN CAA 0 issue “letsencrypt.org”
casper.barasu.org. 300 IN CAA 0 issuewild “\;”

viva High Sierra。

みんな大好きSSLLABにて確認

DNS Certification Authority Authorization (CAA) Policy found for this domain. と表示されてます。

下の方にもちゃんと表示されている。

まとめ

ということで登録されたサーバではLet’s Encrypt以外で証明書を取ろうとすると引っかかるんだろうなと想像(そこまでテストはしていない)
DNS CAAレコードに Let’s Encrypt 認証局を設定するにはテストまでしてちゃんとはじいてくれたそうです。
ありがたや〜

ACMがさっさと対応すべき。

個人的にはHTTPS Everywhereが普通になるから怪しげな証明局をはじきたいのもわかる。でもそのCAAを出しているDNSは安全なのかという話も・・・
DNSSECも含めてDNS周り今後もまだまだ変わっていきそう。