AWS Certificate Manager (ACM)：お名前.comでのCNAMEレコード追加から証明書発行までの手順

## はじめに
ウェブサイトやAPIでHTTPS通信を実現するには、SSL/TLS証明書が必要です。

:::note
**AWSでは、Certificate Manager (ACM) を利用することで、簡単かつ無料で証明書を発行できます。**
:::

本記事では、ACMを使用して証明書を発行する手順を紹介します。未来の自分への備忘録として整理していきます。

## 知識整理
### AWS Certificate Manager (ACM) とは？

![スクリーンショット 2024-11-22 20.16.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/82a2957e-90f8-0162-76b3-ec00c9990572.png)
引用画像：https://aws.plainenglish.io/configure-aws-acm-certificates-for-aws-ec2-44e4eed7feb

ACM (AWS Certificate Manager) は、AWSが提供するSSL/TLS証明書の管理サービスで、以下の特徴があります。

:::note warn
- **無料で利用可能：**
証明書の発行や更新に追加料金は発生しません。

- **自動更新：**
発行した証明書は有効期限前に自動的に更新されます。

- **AWSサービスとの連携：**
ALB、CloudFront、API Gatewayなどに簡単に統合可能です。
:::

詳しくは、AWSの公式サイトを確認してください。

https://aws.amazon.com/jp/certificate-manager/

## 実際に発行してみた

AWS Management Consoleにログインし、サービス一覧から「Certificate Manager」を選択します。

:::note
**ここでは、ドメイン名（Route 53または他のレジストラで登録済み）を前提に証明書を発行する手順を紹介します。**
:::

![スクリーンショット 2024-11-22 20.18.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/679dc0f6-a3d4-80fb-519a-31834cd0c57f.png)

「証明書をリクエスト」をクリックし、「証明書をリクエスト」を選択します。

![スクリーンショット 2024-11-22 20.19.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/55e61669-e37e-4f7c-e418-7244d0458f7a.png)

ここでは、事前にお名前.comから無料で取得したドメインを使用しています。
必要なドメイン（例: ``honda333.blog``）を入力します。

![スクリーンショット 2024-11-22 20.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/4604daa6-711e-dce8-a5e1-47fa8acdf11f.png)

ワイルドカード証明書を発行する場合は、``*.honda333.blog`` の形式で入力します。

ドメイン所有の確認方法を選択する箇所では、「DNS認証」を選択します（推奨）。

![スクリーンショット 2024-11-22 20.25.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/95653688-ed32-67b6-bdd3-afec6963a977.png)

DNS認証では、提供されたCNAMEレコードをドメインのDNS設定に追加します。

:::note warn
**Route 53を利用している場合、「Route 53にレコードを追加」を選択すると、自動的にレコードが登録されます。**
:::

ACMのサービス画面で証明書が無事発行されたことが確認できました。

![スクリーンショット 2024-11-22 20.49.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/6c7e1bd9-340d-663d-14f2-f5f2812c2c8a.png)

## お名前.comでCNAMEレコードを追加

お名前.comのウェブサイトにログインし、「ドメインNavi」から対象のドメイン（例：``honda333.blog``）を選択します。

![スクリーンショット 2024-11-22 20.53.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/759be808-9787-a89d-873b-b05fdbf28aa2.png)

「ネームサーバー情報」タブから「DNSレコードの追加」を選択します。

![スクリーンショット 2024-11-22 20.59.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/86005503-ab41-e0af-1ffe-cb48e89f1b84.png)

DNS設定を行う対象のドメインのラジオボタンにチェックを入れ、「次へ」ボタンをクリックします。

![スクリーンショット 2024-11-22 21.00.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/69a5aac9-7503-df79-e93b-654657fed0d5.png)

そのまま「DNSレコード設定を利用する」を選択します。

![スクリーンショット 2024-11-22 21.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/bbf770a0-c564-68ea-a5ea-cb039e3042a4.png)

画面遷移後、ACMで発行されたCNAMEのドメイン名を使用して登録を行います。

![スクリーンショット 2024-11-22 21.04.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/56e5c552-946b-1e62-4f8b-46500110e022.png)

「VALUE」の末尾に「.」がある場合は登録できませんので、注意が必要です。

![スクリーンショット 2024-11-22 21.05.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f78c0b64-69b8-d610-1b67-e75adc5c76a6.png)

:::note alert
上記で発行した証明書の「CNAME名」がドメイン名と重複しないように、末尾の部分を削除して入力してください。
:::

正常に登録が完了すると、大量のメールが届きますので、必要に応じて開封して内容を確認してください。

![スクリーンショット 2024-11-22 21.26.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/0ed7ede7-c41e-a680-0dcb-6fc5150a27f6.png)

## 証明書の確認

DNSレコードが正しく追加されると、AWS側でドメイン所有が確認され、証明書が発行されます。

![スクリーンショット 2024-11-22 22.55.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/0143c93d-f7d1-dd86-6bd5-cdd16db04516.png)

所要時間は数分から最大で60分程度です。

:::note warn
**「状態」が「発行済み」と表示されれば、証明書の発行が完了です。**
:::

## まとめ

ここまで読んでいただき、ありがとうございました！

:::note
**想定よりも「状態」が「発行済み」になるまで時間がかかり、少し焦ってしまいましたが、無事に発行されて良かったです！**
:::

また、CNAMEの登録時には不要な文字が入らないように注意が必要だと実感しました！

## 参考記事

https://qiita.com/netreqs078/items/2315d4373e47731934f2

https://zatoima.github.io/aws-acm-ssl-certigication-setting/