コンテンツにスキップ

Certificate Manager@AWSリソース

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. Certificate Managerとは

認証局から発行されたサーバー証明書を管理する。


02. セットアップ

ドメイン名

認証をリクエストするドメイン名を設定する。


検証の方法

DNS 検証か E メール検証かを設定する。


03. 認証局

AWS認証局とは

認証局である ATS によって認証済みのサーバー証明書を管理できる。

サーバー提供者 名前
中間認証局 Amazon認証局
ルート認証局 Starfield認証局、Amazon認証局


04. サーバー証明書の検証方法

ドメイン検証

▼ ドメイン検証とは

ドメインのサーバー証明書を作成するためには、そのドメインの所有者であることを証明する必要がある。

ドメインを購入できるサービス (例:AWS、GCP、GMO) に検証方法が用意されている。

▼ 検証方法の変更

既存のサーバー証明書の検証方法は変更できない。

そのため、検証方法を変更した証明書を新しく発行し、これを紐付ける必要がある。

古い証明書は削除しておく。


DNS検証

CM によって Amazon Route 53 へ自動作成される CNAME レコード値を使用して、ドメインの所有者であることを証明する。

証明書が失効しそうになったとき、CNAME レコード値が照合され、CM が証明書を再発行してくれる。

注意点として、ドメインを AWS 以外 (例:お名前ドットコム) で購入している場合は、NS レコード値を購入先のサービスのドメインレジストラに手作業で登録する必要があることに注意する。

Eメール検証

ドメインの所有者にメールを送信し、これを承認することにより所有者であることを証明する。

ドメインを AWS 以外 (例:お名前ドットコム) で購入している場合は、そちらで設定したメールアドレス宛に確認メールを送信する。


05. サーバー証明書

セキュリティポリシー

許可するプロトコルを定義したルールこと。

SSL/TLS プロトコルを許可しており、対応できるバージョンが異なるため、ブラウザがそのバージョンの SSL/TLS プロトコルを使用できるかを認識しておく必要がある。

バージョン Policy-2016-08 Policy-TLS-1-1 Policy-TLS-1-2
Protocol-TLSv1 ⭕️
Protocol-TLSv1.1 ⭕️ ⭕️
Protocol-TLSv1.2 ⭕️ ⭕️ ⭕️


サーバー証明書の種類

DNS 検証または E メール検証によって、ドメインの所有者であることが証明されると、発行される。

サーバー証明書は、PKI による公開鍵検証に使用される。

証明書の種類 説明
ワイルドカード証明書 証明するドメイン名にワイルドカードを使用したもの。


サーバー証明書の変更

▼ サーバー証明書の確認

Chrome を例に挙げると、サーバー証明書は URL の鍵マークから確認できる。

*例*

CircleCI のサイトは、サーバー証明書のために AWS Certificate Manager を使用している。

ssl_certificate_chrome

▼ ダウンタイム

AWS ALB ではサーバー証明書の変更でダウンタイムは発生しない。

既存のセッションを維持 (調査していないが、スティッキーセッションの仕組み?) しつつ、新しいサーバー証明書が適用される。

Amazon CloudFront は謎...


05-02. サーバー証明書の配置場所パターン

Amazon EC2/Amazon ECS/Amazon EKSの送信元

▼ SSL/TLS終端

HTTPS による SSL プロトコルを受け付けるネットワークの最終地点のことを、SSL/TLS 終端という。

サーバー証明書の配置場所は、SSL/TLS 終端をどこにするかで決める。

AWS の使用上、AWS Certificate Manager のサーバー証明書を配置できない AWS リソースに対しては、外部のサーバー証明書を手に入れて配置する。

トレードオフとして、アプリケーションデータの暗号化処理は通信速度が低下させる。

そのため、パブリックネットワークと信頼できるネットワーク (例:データセンター、プライベートネットワークなど) の境界を SSL/TLS 終端とすることが多い。

▼ Amazon Route 53 ➡️ AWS ALB、NLB、の場合

AWS ALB で SSL/TLS 終端とする場合、Amazon EC2/Amazon ECS/Amazon EKS にサーバー証明書は不要である。

Amazon EC2/Amazon ECS/Amazon EKS で SSL/TLS 終端とする場合、Amazon EC2/Amazon ECS/Amazon EKS に AWS 以外で作成したサーバー証明書を配置する。

パターン
(Amazon Route 53には必ず配置)
SSL/TLS終端
(HTTPSプロトコルの最終地点)
Amazon Route 53 ➡️ AWS ALB (AWS Certificate Managerのサーバー証明書) ➡️ Amazon EC2/Amazon ECS/Amazon EKS AWS ALB
Amazon Route 53 ➡️ AWS ALB (AWS Certificate Managerのサーバー証明書) ➡️ Amazon EC2/Amazon ECS/Amazon EKS (AWS以外のサーバー証明書) Amazon EC2/Amazon ECS/Amazon EKS
Amazon Route 53 ➡️ AWS ALB (AWS Certificate Managerのサーバー証明書) ➡️ Lightsail (AWS以外のサーバー証明書) Lightsail
Amazon Route 53 ➡️ NLB (AWS Certificate Managerのサーバー証明書) ➡️ Amazon EC2/Amazon ECS/Amazon EKS (AWS以外のサーバー証明書) Amazon EC2/Amazon ECS/Amazon EKS

▼ Amazon Route 53 ➡️ Load Balancer Controller由来) の場合

AWS リソースには AWS Certificate Manager のサーバー証明書を紐づけられるが、Kubernetes リソースには AWS 以外のサーバー証明書 (Let’s Encrypt、Cert Manager、Istio) しか紐づけられない。

パターン
(Amazon Route 53には必ず配置)
SSL/TLS終端
(HTTPSプロトコルの最終地点)
Amazon Route 53 ➡️ Load Balancer Controller (AWS Certificate Managerのサーバー証明書) ➡️︎ Service / Pod AWS ALB
Amazon Route 53 ➡️ Load Balancer Controller (AWS Certificate Managerのサーバー証明書) ➡️ Service / Pod Ingress Controller
Amazon Route 53 ➡️ Load Balancer Controller (AWS Certificate Managerのサーバー証明書) ➡️ Service / Pod (AWS以外のサーバー証明書) Pod

▼ Amazon Route 53 ➡️ Amazon CloudFrontの場合

Amazon CloudFront から AWS ALB に HTTPS リクエストを送信する場合、それぞれにサーバー証明書を配置する必要がある。

ただ、Amazon CloudFront はバージニア北部で、また AWS ALB は東京リージョンで証明書を作成する必要がある。

Amazon CloudFront に送信された HTTPS リクエストを AWS ALB へルーティングするために、両方に紐付ける証明書で承認するドメインは一致させる必要がある。

パターン
(Amazon Route 53には必ず配置)
SSL/TLS終端
(HTTPSプロトコルの最終地点)
Amazon Route 53 ➡️ Amazon CloudFront (AWS Certificate Managerのサーバー証明書) ➡️ AWS ALB (AWS Certificate Managerのサーバー証明書) ➡️ Amazon EC2/Amazon ECS/Amazon EKS AWS ALB
Amazon Route 53 ➡️ Amazon CloudFront (AWS Certificate Managerのサーバー証明書) ➡️ Amazon EC2/Amazon ECS/Amazon EKS Amazon CloudFront
Amazon Route 53 ➡️ Amazon CloudFront (AWS Certificate Managerのサーバー証明書) ➡️ Amazon S3 Amazon CloudFront

▼ Amazon Route 53 ➡️ Amazon EC2/Amazon ECS/Amazon EKS、AWS Lightsail、の場合

Amazon Route 53 で SSL/TLS 終端とする場合、Amazon EC2/Amazon ECS/Amazon EKS にサーバー証明書は不要である。

Amazon EC2/Amazon ECS/Amazon EKS で SSL/TLS 終端とする場合、Amazon EC2/Amazon ECS/Amazon EKS に AWS 以外で作成したサーバー証明書を配置する。

パターン
(Amazon Route 53には必ず配置)
SSL/TLS終端
(HTTPSプロトコルの最終地点)
Amazon Route 53 ➡️ Amazon EC2/Amazon ECS/Amazon EKS (AWS以外のサーバー証明書) Amazon EC2/Amazon ECS/Amazon EKS
Amazon Route 53 ➡️ Lightsail (AWS Certificate Managerのサーバー証明書) Lightsail
Amazon Route 53 ➡️ Lightsail (AWS Certificate Managerのサーバー証明書) Lightsail


Amazon EC2/Amazon ECS/Amazon EKSの後段

▼ Amazon Aurora

Amazon Aurora RDS にサーバー証明書を紐づける。

Amazon EC2/Amazon ECS/Amazon EKS から Amazon Aurora RDS へのアプリケーションデータを暗号化できる。