ACM と CAA レコードを実際に試してみた
ACM も Route 53 も CAA レコードに対応したということで、実際の動作がどうなるか試してみました。
CAA レコードその他については、下記の既記事をご参照下さい。
CAA レコードが登録されていない場合
こちらは今まで通りなので詳細は割愛しますが、
当然、普通に ACM (Certificate Manager) から証明書の申請・発行が可能です。
ACM 以外の認証局が CAA レコードに登録されている場合
それでは、このドメイン用の CAA レコードを設定してみたいと思います。
まずは ACM がちゃんとチェックすることを確認したいので、ACM 以外の認証局として Let's Encrypt を設定しました。
念のためこのゾーンのネガティブキャッシュTTLの時間だけ待ってから試すと、このようになりました。
「この証明書のリクエストの状況は "失敗" です。 CAA (Certificate Authority Authentication) エラーにより、1 つまたは複数のドメイン名の検証に失敗しました。」
としっかり表示されていますね。
実際の手順としては、証明書発行手続きは通常通りに進んで、
Approve のためのメールも届くし承認手続きも先へ進むのですが、
最後の最後で弾かれる形になりました。
CAA レコードに ACM を登録(追加)し、改めて申請した場合
それでは、CAA レコードに ACM の設定を追加してみましょう。
AWSのドキュメントに従って CAA レコードを設定します。
TTLの 300秒を待ってから発行依頼すると、正常に発行されました。
特に「CAA のチェックに成功した」といった記述もないので分かりづらいですが、「ちゃんと設定されているなら意識する必要はない」ということだと思います。
ACM のみを CAA に登録した状態で、他の CA で申請した場合
では逆に、ACM のみが設定された状態で、他所の認証局 (CA) の証明書を発行しようとするとどうなるでしょうか。
試しに CAA レコードを下記のように、ACM だけに設定します。
この状態で Let's Encrypt で証明書発行しようとすると、下記のように表示されエラーになりました。
$ sudo letsencrypt certonly --standalone -d (証明書発行対象のドメイン名)
ちゃんと、CAA レコードによって妨げ (prevents) られたって書いてありますね。
まとめ
CAA レコードに期待される、「設定した CA 以外では証明書が発行できない」という動作が確認できました。