怒涛のようにAWSの記事を挙げております(`・ω・´)
今日は、SSL/TLS証明書の発行サービスである、AWS Certificate Manager(ACM)について学んでいきます。
ACMについて学ぶ前に、SSL/TLS証明書って何?というところから整理していきます。
もくじ
・概要
2.ACMの特徴
・特徴
3.ACMの利用方法
1.SSL/TLS証明書とは
◎概要
- データ保護
Webサイト⇔Webブラウザ間の通信が暗号化され、データの盗聴・漏洩を防げる。 - サイトの正当性証明
SSL/TLS証明書により、Webサイトの正当性(偽装されていないこと)を示せる。 - SEO向上
Googleなどの検索エンジンは、SSL/TLSを使用しているサイトを優先的に表示するため、SEO向上にもつながる。
◎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 から] とし、
プルダウン候補から紐づけたいパブリック証明書を選択する。
今回は以上!