DNS-01チャレンジではDNSにランダムに生成されたテキスト片を含むTXTレコードを登録することで、ドメインの所有権を証明します。これを実現するには、DNSレコードの更新APIを利用するためのAPIキーが必要です。
必要な準備は、DNSサーバをどこで運用しているか?によって異なりますが、弊社ではDNSサーバとして、Amazon Route 53 – DNS サービス を利用しています。
Route 53で、DNSレコード更新の権限を持つAPIキーを発行する手順を以下に示します。
手順概要
流れとしては下記の二段階です
- DNS認証のためのAWS IAM Roleを作る
- IAM Userを作り、上記で作成したIAM Roleを割り当てる
- 上記作成したIAM Userの権限でアクセスを許す APIキーを発行する
DNS認証のためのAWS IAM Roleを作る
teppi.net ドメインにTXTレコードを作れるようなRoleを作ります。あらかじめ、権限のあるユーザでAWS Consoleにログインして実行します。
ゾーンIDを確認
Route53では、複数のDNSゾーン(ドメイン)を管理していますが、対象のゾーンは、ゾーンIDで参照できます。まずはゾーンIDを確認します。

teppi.netのZONE IDは、XXXXXXXXXXXXXXXXXX でした。ZONE IDをコピーしておきます。
IAM Roleを作成
IAM>Policies の画面を開き、「Create Policy」ボタンを押してポリシーを作成します。

ポリシー作成は、JSONで編集します。

下記のように編集すると、「特定のZONE IDについて、TXTレコードを編集できる」という権限になります
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ChangeTXTRecord",
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/XXXXXXXXXXXXXXXXXX"
]
}
{
"Sid": "GetZoneInfo",
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:ListResourceRecordSets",
"route53:GetChange"
],
"Resource": "*"
}
]
}
Next>で進み、Policyに名前をつけて保存します。
ここでは、「Route53_TXT_Edit」というPolicy nameを付与しました。

最後にCreate Policyボタンを押して確定します。
IAM User作成
EC2 Instance 上のWindowsマシンから呼ぶ場合は、インスタンスに対してRoleを割り当てて使うことができます。今回はEC2外にあるサーバから実行するので、IAM Userを作ります。
Create User でユーザを作成し、さっき作成したRole「Route53_TXT_Edit」を割り当てます

できあがったユーザに対して、アクセスキーを発行します。
APIキーを作成
IAM Userの編集画面(上記の画面)で「Create access key」で作成します。
下記のようなアクセスキー情報が生成されます
Access key:ZZZZZZZZZZZZZZZZZZZZZZZZZZ
Secret Access Key:6zzzXZZZZZZZZZZZzzzZZZZZZZZZZZZZZZZZ
ここで取得したAPIキー情報があれば、ACMEクライアント(たとえば、WinACME(wacs.exe)とroute53プラグイン)から、APIキーを用いてDNSサーバのTXTレコード書き換えを許可することで、DNS-01チャレンジを通すことができます。

