はじめに
Route53のCAAレコードって何??という感じだったので調査した話です。
CAAレコードとは?
ドメイン名の登録者が、登録されたドメイン名に対応する証明書の発行を許可する認証局(Certification >Authority:CA)を指定するリソースレコードです。CAAは、Certification Authority Authorizationを意味します。ドメイン名登録者は、CAAリソースレコードを設定することで
・証明書の誤発行を防止
・不正な証明書発行要求の検知
が期待できます。
普段AWSのACMでしか証明書を作成したことがなく、認証局(CA)は意識してませんでしたが、
要するに、ドメインのCAAレコードでACM以外の認証局を設定している場合は、証明書の作成がエラーになるということです。
ちなみに、AWSのRoute53では、2017年からサポートが開始されたレコードです。
実際に試してみる
認証局をグローバルサインに限定するように、CAAレコードを設定してみました。
~> dig CAA [ドメイン名] +short
0 issue "globalsign.com"
~>
この設定で、ACMにて証明書を作成すると。。。
ACMの認証局は認可されてないので証明書作成に失敗しました。
ステータスの詳細を見ると確かにCAAエラーになっています。
下記のようにACMの認証局を追加する、もしくはCAAレコードを削除することで解決できます。
~> dig CAA [ドメイン名] +short
0 issue "amazon.com"
0 issue "globalsign.com"
~>
認証局(CA)例
ACM "amazon.com"
Let's Encrypt "letsencrypt.org"
グローバルサイン "globalsign.com"
セコムトラストシステムズ "secomtrust.net"
サイバートラスト "cybertrust.ne.jp"
JPRS "jprs.jp"
・
・
証明書発行の流れは以下の図がわかりやすいので、JPRSから引用します。
図の③手順でCAAレコードが設定されていない場合は、そもそも発行制御がされていないと判断され、どの認証局からでも証明書を発行できます。
参照元:DNSを用いたサーバー証明書の発行制御_~CAAリソースレコードの概要と現状~
最後に
CAAレコードは設定しなくても、それ自体がサービス影響のあるものではありませんが、証明書の発行制御の設定を行うことでセキュリティレベルが上がることがわかりました。
証明書作成の際にCAAエラーが発生した際は、証明書の発行制御が行われてるのでご注意ください。