最近、新しくテストサーバーを立ち上げた際に、Let’sEncryptからSSL証明書の取得を行ったのですが、CAAレコードで許可されていないため取得不可能、のようなエラーが出力されたので、対処法を調べてみました。
まず、CAAレコードとは何かというと、ドメインの所有者が自ドメインのSSL証明書を発行する際、どこの認証局からの証明書の発行を許可するか、を指定するDNSのレコードの種類となっています。
このCAAレコードに指定されたドメインをもつ認証局以外ではドメインのSSL証明書を取得することができなくなるため、SSL証明書の不正取得防止に役立ちます。
今回使用したドメインでは、親ドメインも含めて、Let’s Encryptで取得したことがなかったため、Let’s EncryptのCAAレコードがない状態となっていました。
Let’s EncryptのCAAレコードをBIND9に設定する場合、次のように定義すればOKです。
@(またはサブドメイン名) IN CAA 0 issue "globalsign.com" ;許可する認証局1件目
@(またはサブドメイン名) IN CAA 0 issue "letsencrypt.org" ;許可する認証局2件目
@(またはサブドメイン名) IN CAA 0 issuewild "letsencrypt.org" ;許可する認証局(ワイルドカード証明書の場合)
複数の認証局を許可する場合、上記のように複数行で指定すればOKです。
また、ワイルドカード証明書の発行を許可する場合は、”issue”の代わりに”issuewild”を指定します。
この設定を行ったことで、エラーが解消し、Let’s Encryptの証明書も取得できるようになりました。
先にも上げたとおり、CAAレコードは不正な証明書発行を防ぐ効果があるので、設定したドメインのセキュリティを向上させることができます。
DNSサーバーが対応している必要がありますが、もし利用可能な環境であれば積極的に使っていきたいですね。
参考サイト: