ACMの認証フローを確認する
はじめに
ACMの証明書を作成する際に、ふと、あれ?これってどうやって認証されてるんだっけ?
となったのでちょっと調べてみました。
ドメインの取得
まずは、証明書取得の前にドメインを取得します。
Route53やお名前.comなどを使ってドメインを取得しておきます。
このドメイン名をHTTPSで公開するために、ACMの証明書を使って
私のサイトは安全ですよ!という証明を行います。
証明書リクエスト
ではACMのパブリック証明書をリクエストしたいと思います。
とても簡単です。
先ほど取得したドメインを登録します。
あとは検証方法を選択するだけです。
ではここで私が疑問に感じていたことを記載していきます。
*.example.comはなぜ登録するの?
ドメインを登録する際、*.<ドメイン名>
で登録することがあります。
なぜ*(ワイルドカード)を登録するのでしょうか?
これは、例えば自身のショッピングサイトの中でブログを立ち上げたとします。
その際に、新たなサブドメインでblog.example.comというドメインを作成したくなりました。
しかし、blog.example.comというサブドメインのために新たに証明書を発行するのは面倒ではありませんか?
そこで、最初に取得したドメインに*(ワイルドカード)を付けたドメインを登録しておくことで
後から作成したサブドメインでも証明書を共有できるというメリットがあります。
黄色がexample.com
の範囲で、青が*.example.com
の範囲です。
検証ってなにしてるの?
検証は何を検証しているのでしょうか?
この検証というフローは
「証明書を紐付けたい〜」と言っている人が本当にドメインの所有者なの?を確かめる工程です。
この検証には2つの方法があります。
- DNS検証
- メール検証
それぞれ詳しくみていきましょう。
DNS検証
ACMから証明書を取得するのは簡単です。
ドメイン名を入力すればCNAMEレコードが発行されるだけです。
ということはgoogle.comで証明書を発行することも簡単にできます。
ただし、その証明書を使うにはACMが発行したCNAMEレコードをRote53(DNS)に登録する必要があります。
このRoute53には第三者はアクセスできますか?できませんね。
つまり、あなたはgoogle.comで証明書を発行しても、googleさんのRoute53にアクセスできなければCNAMEレコードを登録することができません。
コンソール画面も確認しておきましょう。
DNS検証を選択すると以下のようにCNAMEレコードが発行されます。(右下の黒塗りの部分)
これをRote53のレコードに登録すると、数分から数時間で検証が行われます。
メール検証
こちらの方がイメージがしやすいでしょうか。
ACMで証明書を作るとドメインの所有者へメールが送信されます。
これを承認することで証明書の検証が成功します。
注意点として、この時に送信されるメールアドレスは特定のアドレスになります。
実際にメール検証で証明書を作成した場合の画面です。
右端に登録された所有者という欄があります。
admin@<ドメイン>というように既存のドメインのメールアドレスに承認のメールが送られます。
自分のメールアドレスにメールが飛んでくるわけではない。ということに注意しましょう。
証明書発行時の注意点
AMC証明書を発行の際の注意点といえばCloudFront用に発行する場合です。
CloudFrontで使用できるACM証明書はバージニア北部リージョンという制約があります。
ALBやAPI Gatewayに紐付ける場合は、そのリソースがあるリージョンを選択してください。
まとめ
検証はDNSを使うパターンが多いのかな?と思います。
特にTerraformなどでリソースを作成する場合は、全てコードで完結するDNSが楽かと思います。
Discussion