AWS Certificate Manager (ACM) について簡単にまとめる【がんばりすぎないインフラ】
こんにちは、sasumasa です。
今回は AWS の AWS Certificate Manager (ACM) について概要をまとめつつ、僕が仕事をする中で得た知見をまとめたいと思います。
ACM とは
ACM とは、SSL/TLS 証明書のプロビジョニング、管理、デプロイを簡単にするサービスです。
ELB や Cloud Front、Amazon API Gateway の API などの統合された AWS リソースに簡単にデプロイできるようになります。
AWS でリソース管理をしていて、https 通信を実現したい時に使うイメージです。
この ACM の利用について気をつけておきたいことをまとめておきます。
ACM の証明書とリージョン
まず、ACM の証明書はリージョナルリソースということを念頭に置かなければなりません。つまりリージョンによって使える証明書が異なります。
ACM を利用する際に関連してくるリソースとして、ドメインを管理する Route53 やロードバランサーの ALB、CDN の Cloud Front があるのですが、使うべき証明書のリージョンがそれぞれ異なります。
それぞれのリソースとリージョンの関係は以下の通りです。
- Route53 : グローバル(リージョンは関係ない)
- Cloud Front : グローバル
- ALB : リージョナル
グローバルリソースである Route53 から特定のリージョンで証明書を発行するのはイメージはしやすいと思うのですが、グローバルな Cloud Front に証明書を発行する際にはどうすればいいのでしょうか?
ドキュメントによると、Cloud Front の場合はバージニア北部リージョンで証明書を発行しなければなりません。
Amazon CloudFront で ACM 証明書を使用するには、米国東部(バージニア北部) リージョンで証明書をリクエストまたはインポートする必要があります。CloudFront ディストリビューションに関連づけられたこのリージョンの ACM 証明書は、このディストリビューションに設定されたすべての地域に分配されます。
ALB はリージョナルリソースなので、例えば東京リージョンの ALB は Cloud Front のために発行されたバージニア北部の証明書を使い回すことができません。そのためクラウド構成に ALB と Cloud Front が含まれていて、同じドメインで SSL/TLS 通信を行いたい場合は、わざわざ各リージョンで証明書を発行しなければならないようです。
ACM の料金
ACM の料金ですが、パブリック SSL/TLS 証明書の場合は無料です。プライベート SSL/TLS 証明書の場合は有料となります。
パブリック証明書とプライベート証明書の違いはこの Q&A を見るとイメージしやすかったです。
パブリック、プライベート両方の証明書は、ネットワークでリソースを特定し、これらのリソース間での通信を安全にするのに役立ちます。パブリック証明書はパブリックインターネットでリソースを特定し、プライベート証明書はこれをプライベートネットワークで行います。重要な違いは、アプリケーションとブラウザはデフォルトで自動的にパブリック証明書を信頼するのに対し、プライベート証明書を信頼するには管理者がアプリケーションを明示的に設定する必要があることです。
パブリック証明書はパブリック認証局から発行されますが、このパブリック認証局は監査法人から厳しい審査をパスしています。そのためブラウザからデフォルトで信頼されます。
一方プライベート証明書は審査を受けていないプライベート認証局から発行されます。プライベート証明書はその有効期限や属性などを自由に設定できますが、その証明書をブラウザが信頼するために設定する必要があるようです。どうやら組織内などのプライベートネットワークなどで使いたい時に使われるようです。
今回は ACM についてざっくりまとめてみました。
Discussion