AWS入門ブログリレー2024 〜AWS Certificate Manager編〜

こんにちは、AWS事業本部の荒平(@0Air)です。

当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の47日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。今回のテーマは『AWS Certificate Manager』です。

AWS Certificate Manager(ACM)の概要

AWS以外の関連技術も交えて、ACMの概要をお伝えします。

SSL/TLS証明書?

何番煎じか分かりませんが、SSL/TLS証明書の基本をまずはさらっていきましょう。

SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、インターネット上でデータを安全に送受信するためのプロトコルです。元々はSSLが普及していましたが、現在ではSSLを元に開発されたTLSが主流となっています。
"SSL"といえば一般的には"TLS"も含みます。そのため表記としてはSSL/TLSが多いかと思います。

主にサーバと、ユーザーのクライアント間の通信を暗号化することに利用されます。

サーバとクライアント間で証明書のやり取り・検証を行い、通信先のドメインと証明書のドメインが一致すれば共通鍵を交換します。
この共通鍵を利用して通信内容を暗号化・復号化することで第三者からの不正な閲覧を防ぐ仕組みです。

SSL/TLS通信のイメージ

画像引用:SSL/TLSの仕組み | 総務省

AWSでは、執筆時点でTLSバージョン1.2をサポート、一部サービスでバージョン1.3対応となっています。(TLS1.2未満は非推奨)
違いとしては、以下のブログに記載のとおりですが、実際のデータを送るまでのサーバ/クライアント間のやり取り(handshake)が一部省略されます。

バージョンとしては数字が1つ増えているだけですが、中身はかなり変わっているため頭の片隅に置いておくと良いと思います。

DV, OV, EV証明書?

証明書はそれぞれ、認証レベルによって区分されています。ドメイン認証(DV)・企業実在認証(OV)・拡張認証(EV)が存在します。
ACMでの証明書発行は、このうちドメイン認証(DV)にのみ対応しています。大半のサイトはDV証明書で問題ないものの、要件によっては、外部の認証機関により発行してもらう必要があります。
発行後、ACMにインポートして管理することはできますが、自動更新など一部の機能は制限されます。

ざっくり理解するために表を記載します。(参考リンクは以下)

項目 DV(Domain Validation) OV(Organization Validation) EV(Extended Validation)
認証レベル ドメイン所有の確認 ドメイン所有 + 組織の確認 ドメイン所有 + 組織の詳細な確認
発行速度 数分~数時間 数日 数週間
コスト
信頼度
ブラウザ対応 通常のSSL/TLSアイコン 通常のSSL/TLSアイコン アドレスバーに組織名が表示される場合がある
使用例 全ての規模のウェブサイト 中小企業サイト、イントラネット 大企業サイト、金融機関
認証プロセス ドメインの所有者が確認される ドメイン所有者 + 組織の存在が確認される ドメイン所有者 + 組織の詳細なバックグラウンドチェック
証明書の内容 ドメイン名 ドメイン名 + 組織情報 ドメイン名 + 組織情報 + 法的情報(法人番号など)
ACMへのインポート 可能 可能 可能
ACMでの発行・自動更新 可能 不可 不可

参考リンク:
もっとも信頼性の高いサーバー証明書「EV SSL/TLS サーバー証明書」とは? | サイバートラスト
DV、OV、EVの各 SSL証明書の違いとは? | digicert
EV SSL byGMO | GMO

ACMを利用する理由

本題に戻り、ACMを利用することによって、ユーザーが受けられるメリットを確認します。
大きいところで以下の3点がメリットとして挙げられます。

  1. ウェブサイトの保護、セキュリティ強化
  2. 証明書の自動更新によるダウンタイム減少、管理負荷低減
  3. AWSへの管理一元化

1は言わずもがなかと思いますが、SSL/TLS証明書を導入することで、通信の保護が行えます。

2について、通常、証明書の有効期限が切れるとブラウザにて警告が表示されます。自動更新を設定しておけば、更新忘れによるアクセス減少、SEOスコア悪化を未然に防ぐことができます。ウェブサイトの管理負荷も抑えられます。
なお、証明書の更新時に通信遮断は発生しません。

3について、DV証明書を利用しているのであれば1つのプラットフォーム(AWS)に発行・更新を集約することができます。
OV/EV証明書の場合もインポートができるので、どの証明書をいつ、更新しなければならないか、1つのダッシュボードで確認することが可能です。

AWS Certificate Manager(ACM)ができること

ACMは、証明書を発行・管理・更新できるマネージドサービスです。

証明書発行

ACMでは、前述の通りドメイン認証(DV)証明書が発行できます。ドメインの確認方法は2種類から選べます。
ドキュメント上では見つけられなかったのですが、コンソールではDNS検証が推奨されています。

項目 Eメール検証 DNS検証 (推奨)
認証方法 ドメインの所有者に認証メールを送信 DNSレコードを追加して認証
手続きの手順 1. 認証メールを受信
2. メール内のリンクをクリックして認証完了
1. 提供されたDNSレコードを取得
2. ドメインのDNS設定にレコードを追加
所要時間 数分~数時間 数分~数時間
使用例 メール受信が容易な場合 DNS設定にアクセス可能な場合
利点 - 検証が迅速で簡単 - 自動化が可能
- ドメインの所有権を確実に証明
欠点 - メール受信が失敗する可能性がある(更新時を含む)
- メールアドレスが特定の形式でなければならない
- DNS設定の変更が必要
- プロパゲーションに時間がかかる場合がある
適用ドメイン 以下特定のメールアドレス *1
(admin@、administrator@、hostmaster@、postmaster@、webmaster@)
すべてのドメイン(DNS設定にアクセスできる場合)
更新自動化の可否 難しい(メールを確認する必要がある)
※参考:電子メール検証の自動化
容易(スクリプトやツールで自動化可能)

Eメール検証の場合、証明書の更新時にメール確認が必要です。メールに気付くかどうかの問題や、属人化の観点からもDNS検証のほうが好ましいと思います。
(DNS検証はCNAMEレコードが残っていれば自動更新が可能)

また、Eメール検証を使用して作成した証明書は、DNS検証に切り替えることができないことに注意が必要です。

証明書発行の実際のステップは、以下ブログをご確認ください。

証明書管理・更新

証明書の管理はACMのダッシュボードから行います。
ACMにより発行した証明書、インポートした証明書が1つの画面で確認できます。

ACMによって発行し、かつ自動更新の対象であれば「更新の適格性」列が「対象」と表示されます。

「使用中」列では、統合されたAWSマネージドサービスにて利用されているかが判断されます。主にCloudFront, Elastic Load Balancing, API Gatewayを指します。(統合されたサービスの一覧)
注意点に後述しますが、統合されたサービスのリストにEC2は含まれていません。

証明書の有効期限に気付くために、EventBridgeやCloudWatchなどを組み合わせて通知させることが可能です。
ACMコンソールの「有効期限イベントの管理」にて期限が切れるまでの日数を設定して、指定した日数前から毎日イベントが発生します。

参考リンク:

注意点

ACMでは、EC2などのインスタンスに直接証明書をインストールすることができません *2
Application Load Balancer(ALB)を中間に挟むか、AWS Private Certificate Authority(PCA)にて証明書を発行する必要があります。(注: コンプライアンス要件によりLet's Encryptが利用できず、AWSマネージドサービスを使う必要がある場合など)
そのため、PCAや外部の認証機関を利用しない場合はEC2でTLS終端することができないことに注意が必要です。

ちなみに、AWS PCAは少し高いイメージがあります(400USD/月)が、通常任意の有効期限で発行する証明書を、7日に限定するモードが実装されており、これを利用することで 50USD/月に抑えることができます。
ただし、元々VDI製品向けの設計なのか、サポートされているAWSのサービスはAppStream、WorkSpacesのみのため上記の用途には向いておらず注意が必要です。

おわりに

以上、『AWS 入門ブログリレー 2024』の47日目のエントリ『AWS Certificate Manager』編でした。
AWS Certificate Manager でプロビジョニングされたパブリック SSL/TLS証明書は無料で利用できます。無くてはならないサービスですね。

次回、2024年5月20日(月)は弊社さかもとによる「AWS Health Dashboard」編の予定です!

このエントリが誰かの助けになれば幸いです。

それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!

参考

更に理解を深めるために、是非以下のリンクもご確認ください。

脚注

  1. ドメインのWHOIS情報に記載されたメールアドレスにもメールは配信されていましたが、2024年6月以降に廃止がアナウンスされています。
  2. Nitro EnclavesによりApache Webサーバを立てる場合などを除く