

# 대체 도메인 이름과 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 콘솔 사용** – AWS CLI에서 `--server-certificate-name` 파라미터에 지정하는 값(예: `myServerCertificate`)은 CloudFront 콘솔의 **SSL 인증서** 목록에 나타납니다.
+ **CloudFront API 사용** – AWS CLI에서 반환하는 영숫자 문자열(예:`AS1A2M3P4L5E67SIIXR3J`)을 메모해 둡니다. 이 문자열은 `IAMCertificateId` 요소에서 지정하는 값입니다. IAM ARN은 필요하지 않습니다. CLI에서도 반환되기 때문입니다.
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 Management Console에 로그인한 다음 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. 업데이트하려는 배포의 ID를 선택합니다.

1. [**General**] 탭에서 [**Edit**]를 선택합니다.

1. 다음 값을 업데이트합니다.  
**대체 도메인 이름(CNAME)(Alternate domain names(CNAME))**  
**항목 추가**를 선택하여 해당 대체 도메인 이름을 추가합니다. 도메인 이름을 쉼표로 구분하거나 각각의 이름을 새 줄에 입력합니다.  
**Custom SSL Certificate(사용자 정의 SSL 인증서)**  
드롭다운 목록에서 인증서를 선택합니다.  
최대 100개의 인증서가 여기에 나열됩니다. 100개 이상의 인증서가 있고 추가할 인증서가 보이지 않는 경우에는 해당 필드에 인증서 ARN을 입력하여 선택할 수 있습니다.  
IAM 인증서 스토어에 인증서를 업로드했는데 목록에 나타나지 않아서 필드에 이름을 입력하는 방법으로 선택을 할 수 없는 경우에는 [SSL/TLS 인증서 가져오기](#cnames-and-https-uploading-certificates) 절차를 검토하여 인증서를 올바르게 업로드했는지 확인합니다.  
SSL/TLS 인증서를 CloudFront 배포와 연결한 후에 모든 배포에서 인증서를 제거하고 모든 배포판이 배포될 때까지 ACM 또는 IAM 인증서 스토어에서 인증서를 삭제하지 않습니다.

1. **변경 사항 저장**을 선택합니다.

1. CloudFront에서 최종 사용자와 CloudFront 간에 HTTPS를 요구하도록 구성:

   1. **동작** 탭에서 업데이트할 캐시 동작을 선택하고 **편집**을 선택합니다.

   1. **Viewer Protocol Policy**(최종 사용자 프로토콜 정책)에 다음 값 중 하나를 지정합니다.  
**Redirect HTTP to HTTPS**  
최종 사용자가 두 프로토콜 모두 사용할 수 있지만, HTTP 요청은 자동으로 HTTPS 요청으로 리디렉션됩니다. CloudFront는 HTTP 상태 코드 `301 (Moved Permanently)`을 새로운 HTTPS URL과 함께 반환합니다. 그러면 최종 사용자는 HTTPS URL을 사용하여 이 요청을 CloudFront에 다시 제출합니다.  
CloudFront는 HTTP에서 HTTPS로 `DELETE`, `OPTIONS`, `PATCH`, `POST` 또는 `PUT` 요청을 리디렉션하지 않습니다. HTTPS에 리디렉션할 캐시 동작을 구성하는 경우, CloudFront는 해당 캐시 동작에 대한 HTTP `DELETE`, `OPTIONS`, `PATCH`, `POST`, 또는 `PUT` 요청에 HTTP 상태 코드 `403 (Forbidden)`으로 응답합니다.
최종 사용자가 HTTPS 요청으로 리디렉션되는 HTTP 요청을 만들 경우 CloudFront에서 두 요청 모두에 대해 요금을 부과합니다. HTTP 요청의 경우에는 CloudFront에서 최종 사용자에게 반환되는 요청 및 헤더에만 요금이 부과됩니다. HTTPS 요청의 경우에는 요청, 헤더, 그리고 오리진에 의해 반환된 파일을 모두 처리합니다.  
**HTTPS Only**  
최종 사용자가 HTTPS를 사용할 경우에만 콘텐츠에 액세스할 수 있습니다. 최종 사용자가 HTTPS 요청 대신에 HTTP 요청을 보내면 CloudFront는 HTTP 상태 코드 `403 (Forbidden)`을 반환하고 파일은 반환하지 않습니다.

   1. **예, 편집합니다**를 선택합니다.

   1. 최종 사용자와 CloudFront 간에 HTTPS를 요구하려는 추가적인 캐시 동작 각각에 대해 단계 a부터 c까지 반복합니다.

1. 업데이트한 구성을 프로덕션 환경에서 사용하기 전에 다음 사항을 확인합니다.
   + 각 캐시 동작의 경로 패턴이 최종 사용자에 HTTPS를 사용하도록 지정한 요청에만 적용되는가.
   + 캐시 동작이 CloudFront에서 평가하도록 할 순서대로 나열되었는가. 자세한 내용은 [경로 패턴](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern) 단원을 참조하세요.
   + 캐시 동작이 올바른 오리진에 요청을 라우팅하는가.