この記事では、AWSの証明書サービスを利用してDV証明書を発行する手順を解説します。 DV証明書は、「ドメインの管理権限を持っていること」を証明するだけで発行できるため、HTTPSを有効にしたい場合に簡単に利用できる点が優れています。
ACM(Amazon Certificate Manager)とは?
ACM(Amazon Certificate Manager)は、AWSが提供するサービスで、TLS証明書の発行、管理、デプロイを可能にします。ACMで管理している証明書は、AWSの他のサービス(CloudFrontやALB)と連携し、ユーザーが保有するドメインでHTTPS通信を可能にします。
ACMでは、発行した証明書の自動更新を行うことができるため、13ヶ月ごとの証明書の更新作業が不要になります。
ACMで発行できる証明書はDV証明書のみです。証明書の発行にコストはかかりません。 OV/EV証明書を使いたい場合は、別途発行した証明書をインポートすることで利用できます。この場合は、自動更新はできないため注意が必要です。
ACMの特徴
- 証明書と秘密鍵の管理ができ、他のAWSサービスと連携してユーザードメインでHTTPSが利用できる。
- 無料でDV証明書を発行できる。OV/EV証明書はインポートできる。
- ACMで発行した証明書は自動更新ができる
証明書の種類(EV/OV/DV)による違いは次の記事で解説しています。
証明書の発行手順
ここからACMで証明書を発行する手順をスクリーンショット付きで解説します。
証明書の発行手順は次の通りです。
- 証明書の発行リクエスト
- ドメインの管理権限を持つことの証明
- 証明書が発行される
自分で証明書発行を行う場合は秘密鍵とペアの公開鍵を発行し、CSRを作成して、認証局に送信するという手順が必要です。 ACMを使うと、裏側で鍵作成と管理を行なってくれるため、非常に簡単に証明書の発行を行うことができます。
証明書の発行リクエスト
最初に証明書の発行リクエストを行います。
マネージメントコンソールでACMの画面に移動し、証明書をリクエスト->パブリック証明書をリクエストを選択します。
次に、証明書のCN/SANに含めるドメインのリストを入力します。最初に入力したドメインがCNになります。
CN/SANの意味については次の記事で解説しています。TLS全般に解説していますので、詳しく知りたい場合は是非ご覧ください。
デフォルトでは、10個のドメインまで1つの証明書に含めることができます。AWSのサポートにリクエストをすると100個のドメインまで1枚の証明書に含めることができます。
ドメイン数の上限は、AWSドキュメントの Number of domain names per ACM certificate に記載があります。
次に、検証方法を選択します。 検証方法については、次のセクションであるドメインの管理権限を持つことの証明で解説します。
次に、キーアルゴリズムを指定します。この記事を書いている2024年2月では、RSAとECDSAの2つが選択できます。
ECDSAは楕円曲線暗号を用いており、RSAよりも短い鍵長でRSAと同等の暗号強度を示す比較的新しい方式です。RSAは古くからあり、より普及している方式です。
どちらを選ぶかは、連携する予定のAWSサービスとユーザーが利用しているクライアントによって決まります。
現状、CloudFrontなどの証明書を使うサービスでは、クライアントに応じてRSAの証明書とECDSAの証明書を出し分け(デュアルスタック証明書と呼ばれます)することができません。あまりこだわりたくない場合はRSA、効率を良くしたい場合は、ECDSAを選択すると良いでしょう。
これで証明書の発行リクエストは完了です。
ドメインの管理権限を持つことの証明
証明書の発行リクエストが終わったら、次はDV証明書の要件であるドメインの管理権限を持つことの証明を行います。
DNS検証とEメール検証の2つの方法があるため、どちらも解説していきます。
大きな違いとして、DNS検証の場合はACMの自動更新機能が利用できますが、Eメール検証の場合はできません。証明書の有効期限が切れる45 日前に更新通知がメールで送られてくるため、メール内のリンクをクリックして承認する必要があります。
AWSはDNS検証を推奨していますが、 DNSを管理している部署が別であるといった理由でEメール認証を使うケースもあります。
DNS検証
DNS検証では、指定されたCNAMEレコードを追加することでドメインの管理権限を証明します。 Route53でドメイン管理を行なっている場合は、「Route53でレコードを作成」ボタンを押すと自動的にレコードを作成してくれるので便利です。
他のDNSサービスでドメインを管理している場合、CNAMEレコードを追加していけば完了です。この例の場合は、3つのCNAMEレコードを追加します。
Eメール検証
Eメール検証では、WHOIS に登録された次の 3 つの連絡先と一般的な5つのシステムアドレスの合計8つのメールアドレスにメールが送信され、メール内のリンクをクリックすることで認証が完了します。
WHOISデータベースに変更を加える場合は、ドメイン登録をしたDNSサービスを経由して行います。
送信先の8つのメールアドレスはAWSの公式ドキュメントを参照ください。
実際に届くメールは次のような形式です。 メールが届いていない場合は文章が英語という理由でスパムフィルターに引っかかっている可能性が高いです。 その場合は、メール管理者に確認しましょう。
リンクをクリックすると次のようなページに飛びます。 Approveボタンを押せば認証が完了します。
複数のドメインを証明書に含めた場合は、それぞれに対して認証メールが飛び、全てのメールに対応する必要があるので注意が必要です。
今回のリクエストの例だと3通のメールでそれぞれ承認手続きを行います。
まとめ
本記事では、AWSの証明書管理サービスであるACM(Amazon Certificate Manager)の使い方を解説しました。
ACMは、煩雑になりやすい秘密鍵の管理と証明書の発行を簡単に行える優れたサービスです。 証明書は、無料で発行できるため、この記事で興味を持った方は実際に試してみるとより理解が深まるでしょう。