

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Node.js를 실행하는 EC2 인스턴스에서 HTTPS 종료
<a name="https-singleinstance-nodejs"></a>

다음 구성 파일 예제에서는 [기본 nginx 구성을 확장](nodejs-platform-proxy.md)하여 포트 443에서 수신 대기하고 퍼블릭 인증서와 프라이빗 키를 사용하여 SSL/TLS 연결을 종료합니다.

[확장 상태 보고](health-enhanced.md)를 위한 환경을 구성한 경우 액세스 로그를 생성하도록 nginx를 구성해야 합니다. 이렇게 하려면 `# For enhanced health...` 주석 아래 행 블록에서 앞의 `#` 문자를 제거하여 주석 처리를 해제합니다.

**Example .ebextensions/https-instance.config**  

```
files:
  /etc/nginx/conf.d/https.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      # HTTPS server

      server {
          listen       443;
          server_name  localhost;
          
          ssl                  on;
          ssl_certificate      /etc/pki/tls/certs/server.crt;
          ssl_certificate_key  /etc/pki/tls/certs/server.key;
          
          ssl_session_timeout  5m;
          
          ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
          ssl_prefer_server_ciphers   on;

          # For enhanced health reporting support, uncomment this block:

          #if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
          #    set $year $1;
          #    set $month $2;
          #    set $day $3;
          #    set $hour $4;
          #}
          #access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
          #access_log  /var/log/nginx/access.log  main;
          
          location / {
              proxy_pass  http://nodejs;
              proxy_set_header   Connection "";
              proxy_http_version 1.1;
              proxy_set_header        Host            $host;
              proxy_set_header        X-Real-IP       $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto https;
          }
      }
      
  /etc/pki/tls/certs/server.crt:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

`files` 키는 인스턴스에 다음 파일을 만듭니다.

`/etc/nginx/conf.d/https.conf`  
nginx 서버를 구성합니다. 이 파일은 nginx 서비스가 시작되면 로드됩니다.

`/etc/pki/tls/certs/server.crt`  
인스턴스에 인증서 파일을 만듭니다. *인증서 파일 내용*을 본인의 인증서 내용으로 바꿉니다.  
YAML은 일정한 들여쓰기를 사용합니다. 예제 구성 파일의 콘텐츠를 바꿀 때 들여쓰기 레벨을 일치시키고, 텍스트 편집기가 탭 문자 대신 공백을 사용해 들여쓰기를 하도록 합니다.
중간 인증서를 보유한 경우, 사이트 인증 후 `server.crt`에 포함시킵니다.  

```
      -----BEGIN CERTIFICATE-----
  certificate file contents
  -----END CERTIFICATE-----
  -----BEGIN CERTIFICATE-----
  first intermediate certificate
  -----END CERTIFICATE-----
  -----BEGIN CERTIFICATE-----
  second intermediate certificate
  -----END CERTIFICATE-----
```

`/etc/pki/tls/certs/server.key`  
인스턴스에 프라이빗 키 파일을 만듭니다. *프라이빗 키 내용*을 인증서 요청 또는 자체 서명된 인증서를 만들 때 사용한 프라이빗 키 내용으로 바꿉니다.

**참고**  
프라이빗 키를 포함한 구성 파일을 소스 제어에 커밋하지 마십시오. 구성을 테스트하고 작동 여부를 확인한 후 Amazon S3에 프라이빗 키를 저장하고 배포 중에 다운로드하도록 구성을 변경합니다. 지침은 [프라이빗 키를 Amazon S3에 안전하게 저장](https-storingprivatekeys.md) 섹션을 참조하세요.

단일 인스턴스 환경에서 포트 443의 트래픽을 허용하도록 인스턴스의 보안 그룹도 수정해야 합니다. 다음 구성 파일은 CloudFormation [함수](ebextensions-functions.md)를 사용하여 보안 그룹의 ID를 검색하고 여기에 규칙을 추가합니다.

**Example .ebextensions/https-instance-single.config**  

```
Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0
```

로드 밸런싱된 환경에서 로드 밸런서가 [안전한 트래픽을 그대로 통과](https-tcp-passthrough.md)시키거나 종단 간 암호화를 위해 [암호 해독과 재암호화](configuring-https-endtoend.md)하도록 구성합니다.