

# 代替ドメイン名と HTTPS を使用する
<a name="using-https-alternate-domain-names"></a>

ファイルの URL で独自ドメイン名を使用する場合 (例: `https://www.example.com/image.jpg`)、およびビューワーが HTTPS を使用する場合、次のトピックのステップを完了する必要があります。(URL でデフォルトの CloudFront ディストリビューションのドメイン名、たとえば `https://d111111abcdef8.cloudfront.net/image.jpg` を使用する場合は、代わりに「[ビューワーと CloudFront の間の通信に HTTPS を要求する](using-https-viewers-to-cloudfront.md)」のガイダンスに従います)。

**重要**  
証明書をディストリビューションに追加すると、CloudFront によりすべてのエッジロケーションに証明書が直ちに伝達されます。新しいエッジロケーションが使用可能になると、CloudFront は証明書をそのロケーションにも伝達します。CloudFront から証明書がどのエッジロケーションに伝達されるかを制限することはできません。

**Topics**
+ [

# CloudFront で HTTPS リクエストを処理する方法を選択する
](cnames-https-dedicated-ip-or-sni.md)
+ [

# CloudFront で SSL/TLS 証明書を使用するための要件
](cnames-and-https-requirements.md)
+ [

# CloudFront で SSL/TLS 証明書を使用する場合のクォータ (ビューワーと CloudFront との間の HTTPS のみ)
](cnames-and-https-limits.md)
+ [

# 代替ドメイン名と HTTPS を設定する
](cnames-and-https-procedures.md)
+ [

# SSL/TLS RSA 証明書内のパブリックキーのサイズを確認する
](cnames-and-https-size-of-public-key.md)
+ [

# SSL/TLS 証明書のクォータを引き上げる
](increasing-the-limit-for-ssl-tls-certificates.md)
+ [

# SSL/TLS 証明書をローテーションする
](cnames-and-https-rotate-certificates.md)
+ [

# カスタム SSL/TLS 証明書からデフォルト CloudFront 証明書に戻す
](cnames-and-https-revert-to-cf-certificate.md)
+ [

# 専用 IP アドレスを使用するカスタム SSL/TLS 証明書を SNI に切り替える
](cnames-and-https-switch-dedicated-to-sni.md)

# CloudFront で HTTPS リクエストを処理する方法を選択する
<a name="cnames-https-dedicated-ip-or-sni"></a>

ビューワーに HTTPS とファイルの代替ドメイン名を使用させる場合、CloudFront サーバーが HTTPS リクエストを処理する方法に関する次のいずれかのオプションを選択する必要があります。
+ [Server Name Indication (SNI)](https://en.wikipedia.org/wiki/Server_Name_Indication) を使用する - 推奨
+ 各エッジロケーションの専用 IP アドレスを使用する

このセクションでは各オプションの仕組みについて説明します。

## SNI を使用して HTTPS リクエストを処理する (ほとんどのクライアントで有効)
<a name="cnames-https-sni"></a>

[Server Name Indication (SNI)](https://en.wikipedia.org/wiki/Server_Name_Indication) は、2010 年以降にリリースされたブラウザとクライアントでサポートされている TLS プロトコルを拡張したものです。SNI を使用して HTTPS リクエストに対応するように CloudFront を設定した場合、CloudFront は代替ドメイン名を各エッジロケーションの IP アドレスと関連付けます。ビューワーがコンテンツに対して HTTPS リクエストを送信すると、DNS は、正しいエッジロケーションの IP アドレスにリクエストをルーティングします。ドメイン名の IP アドレスが SSL/TLS ハンドシェイクネゴシエーション中に決定されます。IP アドレスはディストリビューション専用にはなりません。

SSL/TLS ネゴシエーションは、HTTPS 接続を確立する処理の早い段階で実行されます。リクエストがどのドメイン向けかをすぐに決定できない場合、CloudFront は接続を中断します。SNI をサポートするビューワーがコンテンツに対して HTTPS リクエストを送信すると、次のようになります。

1. ビューワーはリクエスト URL からドメイン名を自動的に取得し、TLS クライアントの hello メッセージの SNI 拡張に追加します。

1. CloudFront は、TLS クライアント hello を受け取ると、SNI 拡張のドメイン名を使用して、一致する CloudFront ディストリビューションを検索し、関連する TLS 証明書を返します。

1. ビューワーと CloudFront は、SSL/TLS ネゴシエーションを実行します。

1. CloudFront はリクエストされたコンテンツをビューワーに返します。

現在 SNI をサポートするブラウザの一覧については、Wikipedia の [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) の項目を参照してください。

SNI を使用したくても、ユーザーのブラウザの一部が SNI をサポートしていない場合は、選択肢がいくつかあります。
+ SNI ではなく専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成します。詳細については、「[専用 IP アドレスを使用して HTTPS リクエストを処理する (すべてのクライアントで有効)](#cnames-https-dedicated-ip)」を参照してください。
+ カスタム証明書の代わりに CloudFront SSL/TLS 証明書を使用してください。この場合、ファイルの URL でディストリビューションの CloudFront ドメイン名を使用する必要があります (たとえば、`https://d111111abcdef8.cloudfront.net/logo.png`)。

  デフォルトの CloudFront 証明書を使用する場合、ビューワーは SSL プロトコル TLSv1 以降をサポートする必要があります。CloudFront はデフォルトの CloudFront 証明書では SSLv3 をサポートしません。

  また、CloudFront で使用する SSL/TLS 証明書を独自証明書からデフォルトの CloudFront 証明書に変更する必要もあります。
  + ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更できます。詳細については、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。
  + ディストリビューションを使用してコンテンツを配信していた場合は、新しい CloudFront ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、ファイルの URL を変更する必要があります。詳細については、「[カスタム SSL/TLS 証明書からデフォルト CloudFront 証明書に戻す](cnames-and-https-revert-to-cf-certificate.md)」を参照してください。
+ ユーザーが使用するブラウザを管理できる場合は、SNI をサポートするブラウザにアップグレードしてもらいます。
+ HTTPS の代わりに HTTP を使用します。

## 専用 IP アドレスを使用して HTTPS リクエストを処理する (すべてのクライアントで有効)
<a name="cnames-https-dedicated-ip"></a>

Server Name Indication (SNI) は、リクエストをドメインと関連付ける 1 つの方法です。専用 IP アドレスを使用する方法もあります。2010 年以降にリリースされたブラウザまたはクライアントにアップグレードできないユーザーが存在する場合は、専用 IP アドレスを使用して HTTPS リクエストに対応できます。現在 SNI をサポートするブラウザの一覧については、Wikipedia の [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) の項目を参照してください。

**重要**  
専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場合、追加の月額料金が発生します。課金は、ディストリビューションに SSL/TLS 証明書を関連付けて、ディストリビューションを有効にした時点から開始されます。CloudFront の料金の詳細については、「[Amazon CloudFront の料金](https://aws.amazon.com/cloudfront/pricing)」を参照してください。また、[Using the Same Certificate for Multiple CloudFront Distributions](cnames-and-https-limits.md#cnames-and-https-same-certificate-multiple-distributions) も参照してください。

専用 IP アドレスを使用して HTTPS リクエストに対応するように CloudFront を設定すると、CloudFront は証明書を各 CloudFront エッジロケーションの専用 IP アドレスと関連付けます。ビューワーがコンテンツに HTTPS リクエストを送信すると、次のようになります。

1. DNS は、該当するエッジロケーション内のディストリビューションの IP アドレスにリクエストをルーティングします。

1. クライアントリクエストの `ClientHello` メッセージに SNI 拡張が含まれている場合、CloudFront は、その SNI に関連付けられているディストリビューションを検索します。
   + 一致するものがあれば、CloudFront は SSL/TLS 証明書を使用してリクエストに応答します。
   + 一致するものがない場合、CloudFront は代わりに IP アドレスを使用してディストリビューションを特定し、どの SSL/TLS 証明書をビューワーに返すかを決定します。

1. ビューワーと CloudFront は SSL/TLS 証明書を使って SSL/TLS ネゴシエーションを実行します。

1. CloudFront はリクエストされたコンテンツをビューワーに返します。

この方法は、ユーザーが使用するブラウザやその他のビューワーを問わず、あらゆる HTTPS リクエストで機能します。

**注記**  
専用 IP は静的 IP ではないため、時間の経過とともに変化する可能性があります。エッジロケーションに返される IP アドレスは、[CloudFront エッジサーバーリスト](LocationsOfEdgeServers.md) の IP アドレス範囲から動的に割り当てられます。  
CloudFront エッジサーバーの IP アドレス範囲は、変わる可能性があります。IP アドレスの変更に関する通知を受け取るには、[Amazon SNS 経由で AWS パブリック IP アドレスの変更をサブスクライブ](https://aws.amazon.com/blogs/aws/subscribe-to-aws-public-ip-address-changes-via-amazon-sns/)します。

## 3 つ以上の SSL/TLS 専用 IP 証明書を使用するためのアクセス許可をリクエストする
<a name="cnames-and-https-multiple-certificates"></a>

CloudFront に 3 つ以上の SSL/TLS 専用 IP 証明書を永続的に関連付けるための許可が必要な場合は、以下の手順を実行します。HTTPS リクエストの詳細については、「[CloudFront で HTTPS リクエストを処理する方法を選択する](#cnames-https-dedicated-ip-or-sni)」を参照してください。

**注記**  
CloudFront ディストリビューションに 3 つ以上の専用 IP 証明書を使用するための手順は以下の通りです。デフォルト値は 2 です。ディストリビューションには SSL 証明書を複数バインドできないのでご注意ください。  
CloudFront ディストリビューションに関連付けることができる SSL/TLS 証明書は、一度に 1 つのみです。この数は、すべての CloudFront ディストリビューションで使用できる専用 IP SSL 証明書の合計数です。<a name="cnames-and-https-multiple-certificates-procedure"></a>

**CloudFront ディストリビューションに 3 つ以上の証明書を使用するための許可をリクエストするには**

1. [サポートセンター](https://console.aws.amazon.com/support/home?#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions)にアクセスし、サポートケースを作成します。

1. 使用するためのアクセス権限が必要な証明書の数と状況をリクエストに記載してください。できる限り早くアカウントを更新します。

1. 次の手順に進みます。

# CloudFront で SSL/TLS 証明書を使用するための要件
<a name="cnames-and-https-requirements"></a>

このトピックでは、SSL/TLS 証明書の要件について説明します。これらの要件は、特に注記がなければ、以下の両方の証明書に適用されます。
+ ビューワーと CloudFront との間で HTTPS を使用するための証明書 
+ CloudFront とオリジンとの間で HTTPS を使用するための証明書

**Topics**
+ [

## 証明書の発行者
](#https-requirements-certificate-issuer)
+ [

## AWS リージョン 用の AWS Certificate Manager
](#https-requirements-aws-region)
+ [

## 証明書の形式
](#https-requirements-certificate-format)
+ [

## 中間証明書
](#https-requirements-intermediate-certificates)
+ [

## キーのタイプ
](#https-requirements-key-type)
+ [

## プライベートキー
](#https-requirements-private-key)
+ [

## アクセス許可
](#https-requirements-permissions)
+ [

## 証明書キーのサイズ
](#https-requirements-size-of-public-key)
+ [

## サポートされている証明書のタイプ
](#https-requirements-supported-types)
+ [

## 証明書の有効期限切れと更新
](#https-requirements-cert-expiration)
+ [

## CloudFront ディストリビューションと証明書のドメイン名
](#https-requirements-domain-names-in-cert)
+ [

## SSL/TLS プロトコルの最小バージョン
](#https-requirements-minimum-ssl-protocol-version)
+ [

## サポートされる HTTP バージョン
](#https-requirements-supported-http-versions)

## 証明書の発行者
<a name="https-requirements-certificate-issuer"></a>

[AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) 発行のパブリック証明書を仕様することをお勧めします。ACM からの証明書の取得の詳細については、*[AWS Certificate Manager ユーザーガイド](https://docs.aws.amazon.com/acm/latest/userguide/)*を参照してください。CloudFront ディストリビューションで ACM 証明書を使用するには、米国東部 (バージニア北部) リージョン (`us-east-1`) の証明書をリクエスト (またはインポート) していることを確認します。

 CloudFront は Mozilla と同じ認定権限 (CA) をサポートしているため、ACM を使用しない場合は、「[Mozilla に付属する CA 証明書一覧](https://wiki.mozilla.org/CA/Included_Certificates)」の CA が発行する証明書を使用します。

CloudFront ディストリビューションに指定したオリジンによって使用される TLS 証明書も、Mozilla に付属する CA 証明書一覧に含まれる CA から発行されている必要があります。

証明書の取得とインストール方法については、使用している HTTP サーバーソフトウェアのドキュメントおよび CA のドキュメントを参照してください。

## AWS リージョン 用の AWS Certificate Manager
<a name="https-requirements-aws-region"></a>

AWS Certificate Manager (ACM) の証明書を使用して、ビューワーと CloudFront との間で HTTPS を必須にする場合は、米国東部 (バージニア北部) リージョン (`us-east-1`) の証明書をリクエスト (またはインポート) していることを確認します。

CloudFront とオリジンとの間で HTTPS を必須にする場合、オリジンとして Elastic Load Balancing のロードバランサーを使用していれば、任意の AWS リージョン で証明書をリクエストまたはインポートできます。

## 証明書の形式
<a name="https-requirements-certificate-format"></a>

公開証明書は X.509 PEM 形式で作成されている必要があります。これは、AWS Certificate Manager を使用する場合のデフォルトの形式です。

## 中間証明書
<a name="https-requirements-intermediate-certificates"></a>

サードパーティー認定権限 (CA) を使用している場合、`.pem` ファイルには、ドメインの証明書の署名者である CA の証明書から始めて、証明書チェーン内のすべての中間証明書を含めます。通常は、適切なチェーン順で中間証明書とルート証明書を並べたファイルが CA のウェブサイトに用意されています。

**重要**  
ルート証明書、信頼パス内に存在しない中間証明書、CA の公開キー証明書は含めないでください。

例を示します。

```
-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----
```

## キーのタイプ
<a name="https-requirements-key-type"></a>

CloudFront は RSA および ECDSA パブリック (公開) とプライベートのキーペアをサポートします。

CloudFront は、RSA 証明書と ECDSA 証明書を使用して、ビューワーとオリジンの両方への HTTPS 接続をサポートします。[AWS Certificate Manager (ACM)](https://console.aws.amazon.com/acm) では、RSA または ECDSA 証明書をリクエストしてインポートし、CloudFront ディストリビューションに関連付けることができます。

HTTPS 接続でネゴシエートできる CloudFront でサポートされている RSA および ECDSA 暗号のリストについては、「[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md)」および「[CloudFront とオリジンとの間でサポートされているプロトコルと暗号](secure-connections-supported-ciphers-cloudfront-to-origin.md)」を参照してください。

## プライベートキー
<a name="https-requirements-private-key"></a>

サードパーティー認証機関 (CA) の証明書を使用している場合、以下の点に注意してください。
+ プライベートキーが証明書のパブリックキーと一致している。
+ プライベートキーは、PEM 形式でなければなりません。
+ プライベートキーはパスワードで暗号化できません。

AWS Certificate Manager (ACM) が証明書を提供した場合、ACM はプライベートキーをリリースしません。プライベートキーは、ACM に統合された AWS のサービスによる使用のために、ACM に保存されます。

## アクセス許可
<a name="https-requirements-permissions"></a>

SSL/TLS 証明書を使用およびインポートするアクセス許可が必要です。AWS Certificate Manager (ACM) を使用している場合は、AWS Identity and Access Management アクセス許可を使用して証明書へのアクセスを制限することをお勧めします。詳細については、『*AWS Certificate Manager ユーザーガイド*』の「[Identity and Access Management](https://docs.aws.amazon.com/acm/latest/userguide/security-iam.html)」を参照してください。

## 証明書キーのサイズ
<a name="https-requirements-size-of-public-key"></a>

CloudFront がサポートする証明書キーのサイズは、キーと証明書の種類によって異なります。

**RSA 証明書の場合: **  
CloudFront は、1024 ビット、2048 ビット、3072 ビット、4096 ビットの RSA キーをサポートしています。CloudFront で使用できる RSA 証明書のキーの長さは最大 4096 ビットです。  
 ACM が発行する RSA 証明書のキーの最大長は 2048 ビットであることに注意してください。3072 ビットまたは 4096 ビットの RSA 証明書を使用するには、証明書を外部から取得して ACM にインポートする必要があります。これにより、CloudFront で使用できるようになります。  
RSA キーのサイズを確認する方法については、「[SSL/TLS RSA 証明書内のパブリックキーのサイズを確認する](cnames-and-https-size-of-public-key.md)」を参照してください。

**ECDSA 証明書の場合: **  
CloudFront は、256 ビットキーをサポートしています。ACM の ECDSA 証明書を使用して、ビューワーと CloudFront との間で HTTPS を必須にするには、prime256v1 楕円曲線を使用します。

## サポートされている証明書のタイプ
<a name="https-requirements-supported-types"></a>

CloudFront は、信頼された認証機関によって発行されたすべてのタイプの証明書をサポートしています。

## 証明書の有効期限切れと更新
<a name="https-requirements-cert-expiration"></a>

サードパーティー認定権限 (CA) から取得した証明書を使用する場合、証明書の有効期限切れをモニタリングし、AWS Certificate Manager (ACM) にインポートする、または AWS Identity and Access Management 証明書ストアにアップロードする証明書を有効期限前に更新する必要があります。

**重要**  
証明書の有効期限の問題を回避するには、現在の証明書の `NotAfter` 値の少なくとも 24 時間前に証明書を更新または再インポートします。証明書の有効期限が 24 時間以内に切れる場合は、ACM に新しい証明書をリクエストするか、新しい証明書を ACM にインポートします。次に、新しい証明書を CloudFront ディストリビューションに関連付けます。  
CloudFront は、証明書の更新または再インポートの進行中に、以前の証明書を引き続き使用する場合があります。これは非同期プロセスであり、CloudFront に変更が反映されるまでに最大 24 時間かかることがあります。

ACM が提供する証明書を使用している場合は、ACM がユーザーに代わって証明書の更新を管理します。詳細については、*AWS Certificate Manager ユーザーガイド* の「[管理された更新](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html)」を参照してください。

## CloudFront ディストリビューションと証明書のドメイン名
<a name="https-requirements-domain-names-in-cert"></a>

カスタムオリジンを使用する場合、オリジンの SSL/TLS 証明書の**共通名**フィールドにドメイン名が含まれ、さらに**サブジェクト代替名**フィールドにもドメイン名がいくつか含まれることがあります。(CloudFront では証明書ドメイン名にワイルドカード文字を使用できます)。

証明書のドメイン名のうち 1 つは、オリジンドメイン名に指定したドメイン名と一致する必要があります。ドメイン名が一致しない場合、CloudFront は HTTP ステータスコード `502 (Bad Gateway)` をビューワーに返します。

**重要**  
ディストリビューションに代替ドメイン名を追加する場合、CloudFront はこの代替ドメイン名が添付した証明書の対象であることを確認します。証明書は、証明書のサブジェクト代替名 (SAN) フィールドの代替ドメイン名をカバーする必要があります。つまり、SAN フィールドは、代替ドメイン名と完全に一致するか、追加する代替ドメイン名の同じレベルにワイルドカードが含まれている必要があります。  
詳細については、「[代替ドメイン名を使用するための要件](CNAMEs.md#alternate-domain-names-requirements)」を参照してください。

## SSL/TLS プロトコルの最小バージョン
<a name="https-requirements-minimum-ssl-protocol-version"></a>

専用 IP アドレスを使用している場合、セキュリティポリシーを選ぶことでビューワーと CloudFront との間の接続に最小 SSL/TLS プロトコルバージョンを設定できます。

詳細については、トピック「[すべてのディストリビューション設定リファレンス](distribution-web-values-specify.md)」の「[セキュリティポリシー (SSL/TLS の最小バージョン）](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy)」を参照してください。

## サポートされる HTTP バージョン
<a name="https-requirements-supported-http-versions"></a>

1 つの証明書を複数の CloudFront ディストリビューションに関連付ける場合、証明書に関連付けられたすべてのディストリビューションで、[サポートされる HTTP バージョン](DownloadDistValuesGeneral.md#DownloadDistValuesSupportedHTTPVersions) に対して同じオプションを使用する必要があります。このオプションは、CloudFront ディストリビューションを作成または更新するときに指定します。

# CloudFront で SSL/TLS 証明書を使用する場合のクォータ (ビューワーと CloudFront との間の HTTPS のみ)
<a name="cnames-and-https-limits"></a>

CloudFront で SSL/TLS 証明書を使用する場合は、以下のクォータに注意してください。これらのクォータは、ビューワーと CloudFront 間の HTTPS 通信のために AWS Certificate Manager (ACM) を使ってプロビジョニングした、ACM にインポートした、または IAM 証明書ストアにアップロードした SSL/TLS 証明書のみに適用されます。

詳細については、「[SSL/TLS 証明書のクォータを引き上げる](increasing-the-limit-for-ssl-tls-certificates.md)」を参照してください。

**CloudFront ディストリビューションあたりの証明書の最大数**  
各 CloudFront ディストリビューションに関連付けることができる SSL/TLS 証明書は最大 1 個です。

**ACM へのインポートまたは IAM 証明書ストアへのアップロードが可能な証明書の最大数**  
サードパーティー認証機関から SSL/TLS 証明書を取得した場合、次のいずれかの場所に証明書を保存する必要があります。  
+ **AWS Certificate Manager** - ACM 証明書数に対する現在のクォータについては、*AWS Certificate Manager ユーザーガイド*の「[クォータ](https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html)」を参照してください。一覧表示されているクォータは、ACM を使用してプロビジョニングした証明書や ACM にインポートした証明書を含む合計です。
+ **IAM 証明書ストア** – AWS アカウントの IAM 証明書ストアにアップロードできる証明書の数の現在のクォータ (以前は制限と呼ばれていました) については、*IAM ユーザーガイド*の「[IAM および STS の制限](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html)」を参照してください。クォータの引き上げは、Service Quotas コンソールでリクエストできます。

**AWS アカウントごとの証明書の最大数 (専用 IP アドレスのみ)**  
専用 IP アドレスを使用して HTTPS リクエストを供給する場合は、以下の点に注意してください。  
+ デフォルトで、CloudFront は AWS で 2 つの証明書を使用する許可を付与します。そのうちの 1 つは日常的に使用する証明書で、もう 1 つは複数のディストリビューションのために証明書のローテーションを実行する必要がある場合の証明書です。
+ 単一の AWS アカウントに複数のカスタム SSL/TLS 証明書が必要な場合は、Service Quotas コンソールでクォータの引き上げをリクエストできます。

**複数の異なる AWS アカウントを使用して作成した CloudFront ディストリビューションに同じ証明書を使用する**  
サードパーティー CA を使用しており、異なる AWS アカウントを使用して作成された複数の CloudFront ディストリビューションで同じ証明書を使用する場合は、証明書を AWS アカウントごとに 1 回 ACM にインポートするか、IAM 証明書ストアにアップロードする必要があります。  
ACM から提供される証明書を使用している場合、別の AWS アカウントで作成された証明書を使用するように CloudFront を設定することはできません。

**CloudFront と AWS の他のサービスに同じ証明書を使用する**  
Comodo、DigiCert、または Symantec などの信頼できる認証機関から証明書を購入した場合、CloudFront と AWS の他のサービスに同じ証明書を使用できます。ACM に証明書をインポートする場合は、一度インポートするだけで複数の AWS のサービスに証明書を使用できます。  
ACM が提供した証明書を使用している場合、証明書は ACM に格納されています。

**複数の CloudFront ディストリビューションに同じ証明書を使用する**  
HTTPS リクエストに対応するために使用している一部またはすべての CloudFront ディストリビューションで同じ証明書を使用できます。次の点に注意してください。  
+ 専用 IP アドレスを使用したリクエストの処理と SNI を使用したリクエストの処理の両方に同じ証明書を使用できます。
+ 各ディストリビューションに 1 個のみ証明書を関連付けることができます。
+ 各ディストリビューションには、証明書の**共通名**フィールドまたは**サブジェクト代替名**フィールドにも表示される 1 つ以上の代替ドメイン名を含める必要があります。
+ 専用 IP アドレスを使用して HTTPS リクエストを処理し、同じ AWS アカウントを使用してすべてのディストリビューションを作成した場合は、すべてのディストリビューションに同じ証明書を使用することによってコストを大幅に削減できます。CloudFront での課金は、ディストリビューションごとではなく、証明書ごとに行われます。

  例えば、同じ AWS アカウントを使用して 3 つのディストリビューションを作成し、3 つのディストリビューションすべてに対して同じ証明書を使用するとします。専用 IP アドレスの使用に対する 1 つの料金のみが発生します。

  ただし、専用 IP アドレスを使用して HTTPS リクエストを処理していて、異なる AWS アカウントでの CloudFront ディストリビューションの作成に同じ証明書を使用している場合は、各アカウントで専用 IP アドレスの使用に対する料金が発生します。例えば、3 つの異なる AWS アカウントを使用して 3 つのディストリビューションを作成し、3 つのすべてのディストリビューションに対して同じ証明書を使用する場合、専用 IP アドレスの使用に対する料金の全額が各アカウントに請求されます。

# 代替ドメイン名と HTTPS を設定する
<a name="cnames-and-https-procedures"></a>

ファイルの URL で代替ドメイン名を使用し、ビューワーと CloudFront との間で HTTPS を使用するには、該当する手順を実行します。

**Topics**
+ [

## SSL/TLS 証明書を取得する
](#cnames-and-https-getting-certificates)
+ [

## SSL/TLS 証明書をインポートする
](#cnames-and-https-uploading-certificates)
+ [

## CloudFront ディストリビューションを更新する
](#cnames-and-https-updating-cloudfront)

## SSL/TLS 証明書を取得する
<a name="cnames-and-https-getting-certificates"></a>

SSL/TLS 証明書を取得します (まだ取得していない場合)。詳細については、該当するドキュメントを参照してください。
+ AWS Certificate Manager (ACM) が提供する証明書を使用するには、[AWS Certificate Manager ユーザーガイド](https://docs.aws.amazon.com/acm/latest/userguide/)を参照してください。その後、[CloudFront ディストリビューションを更新する](#cnames-and-https-updating-cloudfront) に進みます。
**注記**  
AWS のマネージドリソースでの SSL/TLS 証明書のプロビジョニング、管理、およびデプロイには、ACM の使用をお勧めします。米国東部 (バージニア北部) リージョンで ACM 証明書をリクエストする必要があります。
+ サードパーティー認証機関 (CA) から証明書を取得するには、認証機関から提供されたドキュメントを参照してください。証明書を取得した後、次の手順に進んでください。

## SSL/TLS 証明書をインポートする
<a name="cnames-and-https-uploading-certificates"></a>

サードパーティー認証機関から証明書を取得した場合、証明書を ACM にインポートするか、IAM 証明書ストアにアップロードします。

**ACM (推奨)**  
ACM では、ACM コンソールから、またはプログラムによってサードパーティー証明書をインポートできます。ACM への証明書のインポートについては、*AWS Certificate Manager ユーザーガイド*の「[AWS Certificate Manager への証明書のインポート](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)」を参照してください。米国東部 (バージニア北部) リージョンで証明書をインポートする必要があります。

**IAM 証明書ストア**  
(非推奨) 次の AWS CLI コマンドを使用してサードパーティー証明書を IAM 証明書ストアにアップロードします。  

```
aws iam upload-server-certificate \
        --server-certificate-name CertificateName \
        --certificate-body file://public_key_certificate_file \
        --private-key file://privatekey.pem \
        --certificate-chain file://certificate_chain_file \
        --path /cloudfront/path/
```
次の点に注意してください。  
+ **AWS アカウント** - 証明書は、CloudFront ディストリビューションを作成するために使用した AWS アカウントと同じアカウントを使用して IAM 証明書ストアにアップロードする必要があります。
+ **--path パラメータ** – 証明書を IAM にアップロードする場合、`--path` パラメータ (証明書のパス) の値が `/cloudfront/` で始まる必要があります (`/cloudfront/production/`、`/cloudfront/test/` など)。パスは / で終わる必要があります。
+ **既存の証明書** – `--server-certificate-name` および `--path` パラメータには、既存の証明書に関連付けられている値とは異なる値を指定する必要があります。
+ **CloudFront コンソールの使用** – `--server-certificate-name` で AWS CLI パラメータに指定する値 (`myServerCertificate` など) は、CloudFront コンソールの [**SSL Certificate**] (SSL 証明書) リストに表示されます。
+ **CloudFront API の使用** – AWS CLI から返される英数字の文字列 (`AS1A2M3P4L5E67SIIXR3J` など) を書き留めておきます。これは、`IAMCertificateId` エレメントに指定する値です。CLI から返される IAM ARN を書き留めておく必要はありません。
AWS CLI の詳細については、[AWS Command Line Interface ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)および [AWS CLI コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/)を参照してください。

## CloudFront ディストリビューションを更新する
<a name="cnames-and-https-updating-cloudfront"></a>

ディストリビューションの設定を更新するには、以下の手順を実行します。<a name="cnames-and-https-updating-cloudfront-procedure"></a>

**代替ドメイン名用に CloudFront ディストリビューションを構成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 更新するディストリビューションの ID を選択します。

1. [**General**] タブで、[**Edit**] を選択します。

1. 以下の値を更新します。  
**代替ドメイン名 (CNAME)**  
**[項目を追加]** を選択して、該当する代替ドメイン名を追加します。ドメイン名をコンマで区切るか、新しい行にドメイン名を 1 つずつ入力します。  
**カスタム SSL 証明書**  
ドロップダウンリストから証明書を選択します。  
100 個までの証明書がここに一覧表示されます。100 個を超える証明書があり、追加する証明書が表示されない場合には、フィールドに証明書の ARN を入力して選択できます。  
IAM 証明書ストアに証明書をアップロードしたが、一覧に表示されず、フィールドに入力しても選択できない場合には、「[SSL/TLS 証明書をインポートする](#cnames-and-https-uploading-certificates)」の手順を参照して、証明書を正しくアップロードしたかを確認します。  
SSL/TLS 証明書を CloudFront ディストリビューションに関連付けたら、すべてのディストリビューションから証明書を削除してすべてのディストリビューションがデプロイ済みになるまでは、証明書を ACM または IAM 証明書ストアから削除しないでください。

1. **[Save changes]** (変更の保存) をクリックします。

1. ビューワーと CloudFront の間で HTTPS が必須になるよう CloudFront を設定する

   1. [**Behaviors (動作)**] タブで、更新するキャッシュ動作を選択して、[**Edit (編集)**] を選択します。

   1. [**Viewer Protocol Policy**] として次のいずれかの値を指定します。  
**Redirect HTTP to HTTPS**  
ビューワーは両方のプロトコルを使用できますが、HTTP リクエストは自動的に HTTPS リクエストにリダイレクトされます。CloudFront は新しい HTTPS URL と一緒に HTTP ステータスコード `301 (Moved Permanently)` を返します。ビューワーはこの HTTPS URL を使用して CloudFront にリクエストを再送信します。  
CloudFront は、HTTP から HTTPS に `DELETE`、`OPTIONS`、`PATCH`、`POST`、または `PUT` リクエストをリダイレクトしません。HTTPS にリダイレクトするようにキャッシュ動作を設定した場合、CloudFront は HTTP ステータスコード `DELETE` を使用して、そのキャッシュ動作の HTTP リクエスト (`OPTIONS`、`PATCH`、`POST`、`PUT`、または `403 (Forbidden)`) に応答します。
ビューワーが作成した HTTP リクエストが HTTPS リクエストにリダイレクトされた場合、CloudFront では両方のリクエストに対する課金が発生します。HTTP リクエストの場合は、リクエストの料金と、CloudFront がビューワーに返すヘッダーの料金のみが課金されます。HTTPS リクエストの場合、リクエストの料金と、ファイルが返すヘッダーとオブジェクトの料金が課金されます。  
**HTTPS Only**  
ビューワーは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。ビューワーから HTTPS リクエストではなく HTTP リクエストが送信された場合、CloudFront は HTTP ステータスコード `403 (Forbidden)` を返し、ファイルは返しません。

   1. [**Yes, Edit (はい、編集します)**] を選択します。

   1. ビューワーと CloudFront との間で HTTPS を必須にする追加のキャッシュ動作ごとに、ステップ a から c を繰り返します。

1. 本番環境で更新された情報を使用する前に、次を確認してください。
   + ビューワーに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパターンが適用されている。
   + CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「[パスパターン](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)」を参照してください。
   + キャッシュ動作は、リクエストを正しいオリジンにルーティングします。

# SSL/TLS RSA 証明書内のパブリックキーのサイズを確認する
<a name="cnames-and-https-size-of-public-key"></a>

CloudFront 代替ドメイン名と HTTPS を使用する場合、SSL/TLS RSA 証明書内のパブリックキーの最大サイズは 4096 ビットです。(これはキーサイズであり、パブリックキー内の文字数ではありません)。証明書に AWS Certificate Manager を使用する場合、ACM ではこれより大きい RSA キーがサポートされますが、CloudFront ではそのキーを使用できません。

RSA パブリック (公開) キーのサイズを確認するには、次の OpenSSL コマンドを実行できます。

```
openssl x509 -in path and filename of SSL/TLS certificate -text -noout 
```

各パラメータの意味は次のとおりです。
+ `-in` は、SSL/TLS RSA 証明書のパスとファイル名を指定します。
+ `-text` によって、OpenSSL において、RSA パブリック (公開) キーの長さがビット単位で表示されます。
+ `-noout`: OpenSSL において、パブリックキーが非表示になります。

出力例:

```
Public-Key: (2048 bit)
```

# SSL/TLS 証明書のクォータを引き上げる
<a name="increasing-the-limit-for-ssl-tls-certificates"></a>

AWS Certificate Manager (ACM) にインポートしたり、AWS Identity and Access Management (IAM) にアップロードしたりできる SSL/TLS 証明書の数にはクォータがあります。専用 IP アドレスを使用して HTTPS リクエストを処理するように CloudFront を設定するときに AWS アカウントで使用できる SSL/TLS 証明書の数にもクォータがあります。ただし、これらのクォータ数を増やすようにリクエストできます。

**Topics**
+ [

## ACM にインポートする証明書のクォータを引き上げる
](#certificates-to-import-into-acm)
+ [

## IAM にアップロードする証明書のクォータを引き上げる
](#certificates-to-upload-into-iam)
+ [

## 専用 IP アドレスで使用する証明書のクォータを引き上げる
](#certificates-using-dedicated-ip-address)

## ACM にインポートする証明書のクォータを引き上げる
<a name="certificates-to-import-into-acm"></a>

ACM にインポートできる証明書の数のクォータについては、*AWS Certificate Manager ユーザーガイド*の「[クォータ](https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html)」を参照してください。

クォータの引き上げには、Service Quotas コンソールを使用します。詳細については、「*Service Quotas ユーザーガイド*」の「[クォータの引き上げのリクエスト](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。

## IAM にアップロードする証明書のクォータを引き上げる
<a name="certificates-to-upload-into-iam"></a>

IAM にアップロードできる証明書の数のクォータについては、*IAM ユーザーガイド*の「[IAM と STS の制限](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html)」を参照してください。

クォータの引き上げには、Service Quotas コンソールを使用します。詳細については、「*Service Quotas ユーザーガイド*」の「[クォータの引き上げのリクエスト](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。

## 専用 IP アドレスで使用する証明書のクォータを引き上げる
<a name="certificates-using-dedicated-ip-address"></a>

専用 IP アドレスを使用して HTTPS リクエストを処理するときに各 AWS アカウントで使用できる SSL 証明書の数のクォータについては、「[SSL 証明書のクォータ](cloudfront-limits.md#limits-ssl-certificates)」を参照してください。

クォータの引き上げには、Service Quotas コンソールを使用します。詳細については、「*Service Quotas ユーザーガイド*」の「[クォータの引き上げのリクエスト](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。

# SSL/TLS 証明書をローテーションする
<a name="cnames-and-https-rotate-certificates"></a>

SSL/TLS 証明書の有効期限が近づいたら、それをローテーションしてディストリビューションのセキュリティを確保し、ビューワーへのサービス中断を回避する必要があります。ローテーションは以下の方法で行うことができます。
+ AWS Certificate Manager (ACM) が提供する SSL/TLS 証明書の場合、ローテーションする必要はありません。証明書の更新は、ACM によって*自動的に*行われます。詳細については、「*AWS Certificate Manager ユーザーガイド*」の「[Managed certificate renewal](https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html)」を参照してください。
+ サードパーティー認証機関を利用しており、証明書を ACM にインポートした場合 (推奨) または IAM 証明書ストアにアップロードした場合、証明書の交換が必要になることがあります。

  

**重要**  
ACM では、サードパーティー認証機関から入手して ACM にインポートした証明書の更新が管理されません。
専用 IP アドレスを使用して HTTPS リクエストを処理するよう CloudFront を設定した場合、証明書をローテーションしている間、追加の証明書に対して按分された追加料金がかかる可能性があります。ディストリビューションの更新を行って、追加料金を最低限にすることをお勧めします。

## SSL/TLS 証明書をローテーションする
<a name="rotate-ssl-tls-certificate"></a>

証明書をローテーションするには、以下の手順を実行します。ビューワーは、プロセスが完了した後だけでなく、証明書を更新している間もコンテンツにアクセスし続けることができます。<a name="rotate-ssl-tls-certificates-proc"></a>

**SSL/TLS 証明書をローテーションするには**

1. [SSL/TLS 証明書のクォータを引き上げる](increasing-the-limit-for-ssl-tls-certificates.md)、追加の SSL 証明書を使用するためにアクセス権限が必要かどうかを調べます。その場合、アクセス権限をリクエストし、ステップ 2 を続ける前にアクセス権限が付与されるまで待ってください。

1. 新しい証明書を ACM にインポートするか、IAM にアップロードします。詳細については、*Amazon CloudFront 開発者ガイド*の「[SSL/TLS 証明書をインポートする](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html#cnames-and-https-uploading-certificates)」を参照してください。

1. (IAM 証明書のみ) ディストリビューションを一度に 1 つずつ、新しい証明書を使用できるように更新します。詳細については、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。

1. (オプション) ACM または IAM から以前の証明書を削除します。
**重要**  
すべてのディストリビューションから SSL/TLS 証明書を削除し、更新されたディストリビューションのステータスが [`Deployed`] に変わるまで、SSL/TLS 証明書を削除しないでください。

# カスタム SSL/TLS 証明書からデフォルト CloudFront 証明書に戻す
<a name="cnames-and-https-revert-to-cf-certificate"></a>

ビューワーと CloudFront との間で HTTPS を使用するように CloudFront を設定し、カスタム SSL/TLS 証明書を使用するように CloudFront を設定した場合、デフォルトの CloudFront SSL/TLS 証明書を使用するように設定を変更できます。プロセスは、コンテンツの配信にディストリビューションを使用しているかどうかによって異なります。
+ ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更できます。詳細については、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。
+ ディストリビューションを使用してコンテンツを配信していた場合は、新しい CloudFront ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、ファイルの URL を変更する必要があります。そのためには、以下の手順を実行します。

## デフォルト CloudFront 証明書に戻す
<a name="revert-default-cloudfront-certificate"></a>

次の手順では、カスタム SSL/TLS 証明書からデフォルト CloudFront 証明書に戻す方法を示します。<a name="cnames-and-https-revert-to-cf-certificate-proc"></a>

**デフォルトの CloudFront 証明書に戻すには**

1. 適切な構成で、新しい CloudFront ディストリビューションを作成します。[**SSL 証明書**] には、[**デフォルトの CloudFront 証明書 (\$1.cloudfront.net)**] を選択します。

   詳細については、「[ディストリビューションを作成する](distribution-web-creating-console.md)」を参照してください。

1. CloudFront を使用して配信しているファイルの場合は、アプリケーションの URL を更新して、CloudFront によって新しいディストリビューションに割り当てられたドメイン名を使用します。たとえば、`https://www.example.com/images/logo.png` を `https://d111111abcdef8.cloudfront.net/images/logo.png` に変更します。

1. 独自 SSL/TLS 証明書に関連付けられているディストリビューションを削除するか、ディストリビューションを更新して [**SSL 証明書**] の値を [**デフォルトの CloudFront 証明書 (\$1.cloudfront.net)**] に変更します。詳細については、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。
**重要**  
このステップが完了するまで、AWS は独自 SSL/TLS 証明書を使用する料金を課金し続けます。

1. (オプション) カスタム SSL/TLS 証明書を削除します。

   1. AWS CLI コマンド `list-server-certificates` を実行して、削除する証明書の証明書 ID を取得します。詳細については、*AWS CLI コマンドリファレンス*の「[list-server-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-server-certificates.html)」を参照してください。

   1. AWS CLI コマンド `delete-server-certificate` を実行して、証明書を削除します。詳細については、「AWS CLI コマンドリファレンス」の「[delete-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-server-certificate.html)」を参照してください。**

# 専用 IP アドレスを使用するカスタム SSL/TLS 証明書を SNI に切り替える
<a name="cnames-and-https-switch-dedicated-to-sni"></a>

専用 IP アドレスで独自 SSL/TLS 証明書を使用するように CloudFront を設定した場合、SNI でカスタム SSL/TLS 証明書を使用するように切り替えて、専用 IP アドレスに関連付けられた請求が発生しないように変更できます。

**重要**  
CloudFront 設定をこのように更新しても、SNI をサポートするビューワーには影響しません。ビューワーでは、変更前も変更後もコンテンツにアクセスできます。また、変更が CloudFront エッジロケーションに反映されている間もアクセスできます。SNI をサポートしていないビューワーは、変更後、コンテンツにアクセスできなくなります。詳細については、「[CloudFront で HTTPS リクエストを処理する方法を選択する](cnames-https-dedicated-ip-or-sni.md)」を参照してください。

## カスタム証明書から SNI に切り替える
<a name="cloudfront-switch-custom-cert-sni"></a>

次の手順では、専用 IP アドレスを使用するカスタム SSL/TLS 証明書を SNI に切り替える方法を示します。<a name="cnames-and-https-switch-dedicated-to-sni-proc"></a>

**独自 SSL/TLS 証明書を専用 IP アドレスから SNI に切り替えるには**

1. AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 表示または更新するディストリビューションの ID を選択します。

1. [**Distribution Settings**] を選択します。

1. [**General**] タブで、[**Edit**] を選択します。

1. **[カスタム SSL 証明書 – *オプション*]** で、**[レガシークライアントのサポート]** を選択解除します。

1. [**Yes, Edit (はい、編集します)**] を選択します。