

# 代替ドメイン名と 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. **[変更の保存]** をクリックします。

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)」を参照してください。
   + キャッシュ動作は、リクエストを正しいオリジンにルーティングします。