ドメインに対する証明書を発行できる機関を指定することで意図しない第三者からの証明書発行を防ぐための仕組みがCAAレコードです。
以前SymantecがGoogle先生を怒らせた結果生まれたのがこのレコードなんですが、みんな大好きQualys SSL LabsのSSL Server Testでも表示されるので気になる項目です。
私はAzure DNSを利用していますので、Azure DNS上でのCAAレコードの設定方法について調べて実践しました。
Azure DNSでのCAAレコード対応
Azure DNSは2017年11月にCAAレコードに正式対応しました。
対応した旨はAzureのブログに掲載されています。
Azure DNSはCAAレコードに対応したものの、2018年8月末時点でAzure Portalの画面からはCAAレコードの追加・削除・変更等はできない状態です。
CAAレコードを操作するためにはPowerShellから実施する必要があります。
PowershellでのCAAレコード登録
AzureDNSにCAAレコードを登録するのはざっくり以下の手順です。
- AzureにPowerShellで接続
- CAAレコード用のConfigを作る
- CAAレコードを作る
手順を追って解説します。
AzureにPowerShellで接続
PowerShellを開いて以下コマンドを実行し、Azureのリソースマネージャーに接続します。
Connect-AzureRmAccount ※AzureRMが未インストールの場合は先にモジュールをインストール Install-Module AzureRM Connect-AzureRmAccount
ブラウザと同様の認証窓が出るので認証を実施し、PowerShellにAzureのテナント情報等が表示されれば接続成功です。
CAAレコード用のConfigを作る
New-AzureRmDnsRecordConfigを利用してCAAレコードの設定を作ります。
設定内容は証明書発行を許可する証明局を指定するissue、ワイルドカード証明書発行を許可する証明局を指定するissuewild、何かあったときの連絡用アドレスを指定するiodefの3つです。
$caaconf = @() $caaconf += New-AzureRmDnsRecordConfig -CaaFlags 0 -CaaTag "issue" -CaaValue "symantec.com" $caaconf += New-AzureRmDnsRecordConfig -CaaFlags 0 -CaaTag "issuewild" -CaaValue ";" $caaconf += New-AzureRmDnsRecordConfig -CaaFlags 0 -CaaTag "iodef" -CaaValue "mailto:hogehoge@example.com"
CAAレコードを作る
New-AzureRmDnsRecordSetを利用してレコードを登録します。
New-AzureRmDnsRecordSet -ResourceGroupName iotaker -ZoneName iotaker.jp -Name test -RecordType CAA -ttl 3600 -DnsRecords $caaconf Name : test ZoneName : iotaker.jp ResourceGroupName : iotaker Ttl : 3600 Etag : ************************************ RecordType : CAA Records : {[0,issue,symantec.com], [0,issuewild,;], [0,iodef,mailto:hogehoge@example.com]} Metadata :
CAAレコードが作成できました。
~$ dig test.iotaker.jp CAA 0 issue "symantec.com" 0 issuewild "\;" 0 iodef "mailto:hogehoge@example.com"
外から名前を引くと上記のように応答が返ってくることがわかります。