

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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)ことができるようにロードバランサーを設定します。