【AWS】AWS Certificate Manager(ACM)とは | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

怒涛のようにAWSの記事を挙げております(`・ω・´)

今日は、SSL/TLS証明書の発行サービスである、AWS Certificate Manager(ACM)について学んでいきます。

ACMについて学ぶ前に、SSL/TLS証明書って何?というところから整理していきます。

 

もくじ

1.SSL/TLS証明書とは

 ・概要

 ・SSL/TLS証明書の種類

2.ACMの特徴

 ・特徴

 ・対象となるサービス

3.ACMの利用方法

 

1.SSL/TLS証明書とは

◎概要

SSL/TLS証明書は、SSL/TLSを用いた通信において必要となる。
 
SSL/TLSとは、インターネット上で、データを暗号化してやり取りするためのプロトコルである。
SSL/TLSを利用する主なメリットには、以下3点が挙げられる。
  • データ保護
    Webサイト⇔Webブラウザ間の通信が暗号化され、データの盗聴・漏洩を防げる。
  • サイトの正当性証明
    SSL/TLS証明書により、Webサイトの正当性(偽装されていないこと)を示せる。
  • SEO向上
    Googleなどの検索エンジンは、SSL/TLSを使用しているサイトを優先的に表示するため、SEO向上にもつながる。
このような様々なメリットを踏まえ、昨今のWebサイトやWebアプリケーションでは、
SSL/TLSで通信を暗号化することが事実上のスタンダードになっている。
 
そしてこのSSL/TLS通信においては、SSL/TLS証明書と呼ばれる、
サーバのドメイン名や所有者情報、証明書の有効期限等の情報を記載したものが必要になる。
特にビジネス利用においては、SSL/TLS証明書の信頼性や正当性が重要なため、
次に紹介する「パブリック証明書」を取得することが求められる。
 

◎SSL/TLS証明書の種類

SSL/TLS証明書には、パブリック、プライベートの2種類ある。

 

*パブリック証明書

SSL/TLSのパブリック証明書は、信頼のおける、公的な認証局から発行される。
認証局とは、SSL/TLS証明書を発行する機関である。

 

パブリック証明書は認証局により発行され、広く一般公開されているものとなるが、

この時の認証局は「信頼のおける、公的な」機関である点が重要である。

 

認証局自体の信頼性が保障されていないと、証明書の信頼性も揺らいでしまう。

 

信頼できる認証局から認証されて発行されるからこそ、

パブリック証明書は、サーバの信頼性や安全性、正当性を保証してくれるものとなっている。

※このあたりの詳細は以前の記事にて図付きで解説しています。

我ながら分かりやすく説明できていると思うので(笑)、良ければ合わせて読んでみてください。↓


なお証明書は、WebサイトやWebアプリケーションの、ドメイン名と公開鍵を含んでいる。

また、証明書には、発行時点で有効期限が設定されているため、

定期的に更新する必要がある。
 

*プライベート証明書

プライベート証明書も、認証局から発行される。

ただしここでいう認証局は、パブリック証明書を発行する認証局とは異なり、

認証局自体の信頼性が保障されていないものとなる。

 

そもそも、認証局の機能自体は誰でも構築できる。

企業が社内向けサーバ用に内部で構築したり、個人が作ったりした認証局によって、

発行されたSSL/TLS証明書を「プライベート証明書」と呼ぶ。

 

パブリック証明書は作成するのにお金がかかる(ことが多い)が、

プライベート証明書は無料で作成でき、面倒な審査なども不要なメリットがある。

 

ただし、信頼性は保証されないため、

あくまでも社内向けの限られた用途や、個人で公開するWebサイトなどに利用するものである。

 

 

2.ACMの特徴

 

ACM(AWS Certificate Manager)は、SSL/TLS証明書の作成・管理を行うAWSのサービスである。

 

◎特徴

ACMの主な特徴は以下の通りである。

 ・無料で使用可。

 ・パブリック証明書、プライベート証明書のいずれも作成可。

 ・パブリック証明書は、Amazonが管理するパブリック認証機関 (CA) である、 Amazon Trust Servicesから取得される。

 ・プライベート証明書の発行は、AWS内に公開鍵基盤 (PKI) を構築する法人客のみを対象とするサービスで、独自の証明機関 (CA) 階層が自動生成される。

 ・サードパーティ発行の証明書をインポートして、管理下に置くこともできる。

 ・SSL/TLS証明書の作成だけでなく、期限の管理や更新、サーバリソースへの展開も自動で実行される。(自動更新は一定条件を満たした場合のみ)

 

◎対象となるサービス

ACM証明書がサポートされる、AWSのサービスは以下の通り。(2023年5月時点)

 

・ELB(Elastic Load Balancing)
・Amazon CloudFront
・Amazon Cognito
・AWS Elastic Beanstalk
・AWS App Runner
・Amazon API Gateway
・AWS Nitro Enclaves
・AWS CloudFormation
・AWS Amplify
・Amazon OpenSearch Service
 

 

3.ACMの利用方法

ACMの利用開始には、以下の手順を踏む。

 

①証明書のリクエストまたはインポート

 証明書の新規作成リクエスト、または既存証明書のインポートを行う。

②リクエストの場合、ドメイン所有権の検証

 証明申請するドメインの、正式な所有者であることが、AWSから審査される。

③証明書の発行・利用

 リクエストの場合は証明書が発行され、AWSの対象サービスにて利用設定する。

 

 

パブリック証明書の新規作成リクエスト~発行までの大まかな手順を説明する。

 

①証明書の作成リクエスト

作成リクエストは、ACMコンソール画面から簡単に行える。

パブリック証明書の場合、まずは以下を指定して、証明書発行をリクエストする。

 

項目 説明
完全修飾ドメイン名 発行する証明書のドメイン名。
検証方法 ドメイン所有権の審査を、DNS/Eメールのどちらを使って行うか。
AWSからは、証明書の自動更新にも対応している、
DNSでの検証が推奨されている。
(Eメールだと更新毎に対応が必要になる)
キーアルゴリズム 公開鍵(証明書そのもの)や、ペアとなる秘密鍵の暗号化強度。
選択肢は以下の3つ。
 ・RSA 2048(一般的な暗号化手法かつ強度)
 ・ECDSA P 256(暗号化強度はRSA 3072相当)
 ・ECDSA P 384(暗号化強度はRSA 7680相当)
※特段のセキュリティ要件が無ければ、強度と速度のバランスの取れた、RSA 2048を選ぶと良い。
タグ オプションでタグのキー&値ペアを指定可能。

 

 

②ドメイン所有権の検証

①の証明書リクエスト時に選択した検証方法で、ドメインの所有権がAWSによって審査される。

 

*DNS検証の場合

ACMからCNAMEレコードが提供されるため、DNSのゾーンに当該レコードを追加する。

→提供されたレコードを登録できる=ドメインの所有者であると認識される。

 

*Eメール検証の場合

WHOIS データベース(世界に公開されている、ドメイン関連情報が登録されたデータベース)に登録されたメールアドレスに、AWSから確認メールが送信されるので、返信する。

→登録されたメールアドレスの所有者である=ドメインの所有者であると認識される。

 

メール検証の場合、証明書の有効期限毎(13か月(395日)毎)に、AWSからの確認メールに対応する必要がある。

対してDNS検証なら、一度CNAMEレコードを登録してしまえば、削除しない限り自動的に更新してくれる。

何らかの理由でDNSレコードを登録できない場合以外は、DNSでの検証が推奨される。

 

 

③証明書の発行・利用

検証が終われば、AWSから、パブリック証明書が正式に発行される。

発行された証明書は、前述のAWSサービスに関連付け、使用することができる。

 

例えばALB(Application LoadBalancer)との紐づけであれば、
ALBに、HTTPSをリッスンするリスナーを設けたうえで、

「デフォルトSSL/TLS証明書」の設定項目を [ACM から] とし、

プルダウン候補から紐づけたいパブリック証明書を選択する。


 

 

 

今回は以上!