

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

# インスタンスでの HTTPS 終端の設定
<a name="https-singleinstance"></a>

[設定ファイル](ebextensions.md)を使用して、アプリケーションにトラフィックを渡すプロキシサーバーを設定し、HTTPS 接続を終了できます。これは、単一インスタンス環境で HTTPS を使用している場合、またはトラフィックを復号化しないで渡すようにロードバランサーを設定している場合に便利です。

HTTPS を有効にするには、Elastic Beanstalk アプリケーションが実行されている EC2 インスタンスにポート 443 で受信トラフィックを許可する必要があります。このために、設定ファイルの `Resources` キーを使用して、AWSEBSecurityGroup の受信ルールにポート 443 のルールを追加します。

次の例は、`AWSEBSecurityGroup` セキュリティグループに受信ルールを追加して、単一インスタンス環境のセキュリティグループのすべてのトラフィック用にポート 443 を開きます。

**`.ebextensions/https-instance-securitygroup.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
```

デフォルト [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) のロードバランシング環境では、ロードバランサーからのトラフィックのみを受け入れるように、このポリシーを変更できます。例については、「[負荷分散された Elastic Beanstalk 環境でエンドツーエンドの暗号化を設定する](configuring-https-endtoend.md)」を参照してください。

**Topics**
+ [

# Docker を実行している EC2 インスタンスでの HTTPS の終了
](https-singleinstance-docker.md)
+ [

# Go を実行している EC2 インスタンスでの HTTPS の終了
](https-singleinstance-go.md)
+ [

# Java SE を実行する EC2 インスタンスで HTTPS を終了する
](https-singleinstance-java.md)
+ [

# Node.js を実行している EC2 インスタンスで HTTPS を終了する
](https-singleinstance-nodejs.md)
+ [

# PHP を実行している EC2 インスタンスでの HTTPS の終了
](https-singleinstance-php.md)
+ [

# Python を実行している EC2 インスタンスの HTTPS を終了する
](https-singleinstance-python.md)
+ [

# Ruby を実行している EC2 インスタンスでの HTTPS の終了
](https-singleinstance-ruby.md)
+ [

# Tomcat を実行している EC2 インスタンスでの HTTPS の終了
](https-singleinstance-tomcat.md)
+ [

# .NET Core on Linux を実行している Amazon EC2 インスタンスでの HTTPS の終了
](https-singleinstance-dotnet-linux.md)
+ [

# .NET を実行している Amazon EC2 インスタンスでの HTTPS の終了
](SSLNET.SingleInstance.md)

# Docker を実行している EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-docker"></a>

Docker コンテナでは、[設定ファイル](ebextensions.md)を使用して HTTPS を有効にします。

次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

**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;
        
        location / {
          proxy_pass http://docker;
          proxy_http_version 1.1;
          
          proxy_set_header Connection "";
          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-----
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを 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)ことができるようにロードバランサーを設定します。

# Go を実行している EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-go"></a>

Go コンテナタイプでは、[設定ファイル](ebextensions.md)と nginx 設定ファイルで HTTPS を有効にして、nginx サーバーが HTTPS を使用するように設定します。

次のスニペットを設定ファイルに追加して、証明書とプライベートキープレースホルダーを説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `Resources` キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を有効にします。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「[秘密キーを Amazon S3 に安全に保存する](https-storingprivatekeys.md)」を参照してください。

ソースバンドルの `.conf` ディレクトリの `.ebextensions/nginx/conf.d/` 拡張子が付いたファイルに以下を格納します (たとえば、`.ebextensions/nginx/conf.d/https.conf`)。*app\$1port* を、アプリケーションがリッスンするポート番号に置き換えます。この例は、SSL を使用してポート番号 443 を使用するように nginx サーバーを設定しています。Go プラットフォームの設定ファイルについての詳細は、｢[プロキシサーバーを設定します](go-nginx.md)」を参照してください。

**Example .ebextensions/nginx/conf.d/https.conf**  

```
# 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;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
    }
}
```

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。

# Java SE を実行する EC2 インスタンスで HTTPS を終了する
<a name="https-singleinstance-java"></a>

Java SE コンテナタイプでは、.ebextensions [設定ファイル](ebextensions.md)で HTTPS を有効にして、nginx 設定ファイルで HTTPS を使用するように nginx サーバーを設定します。

すべての AL2023/AL2 プラットフォームでは、統一されたプロキシ設定機能がサポートされています。AL2023/AL2 を実行中のプラットフォームバージョンでプロキシサーバーを設定する方法の詳細については、「[リバースプロキシの設定](platforms-linux-extend.proxy.md)」を参照してください。

次のスニペットを設定ファイルに追加して、証明書とプライベートキープレースホルダーを説明に沿って置き換え、`.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「[秘密キーを Amazon S3 に安全に保存する](https-storingprivatekeys.md)」を参照してください。

ソースバンドルの `.conf` ディレクトリの `.ebextensions/nginx/conf.d/` 拡張子が付いたファイルに以下を格納します (たとえば、`.ebextensions/nginx/conf.d/https.conf`)。*app\$1port* を、アプリケーションがリッスンするポート番号に置き換えます。この例は、SSL を使用してポート番号 443 を使用するように nginx サーバーを設定しています。Java SE プラットフォームの設定についての詳細は「[プロキシサーバーを設定します](java-se-nginx.md)」を参照してください。

**Example .ebextensions/nginx/conf.d/https.conf**  

```
# 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;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
    }
}
```

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。

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

# PHP を実行している EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-php"></a>

PHP コンテナタイプの場合、[設定ファイル](ebextensions.md)を使用して、Apache HTTP Server が HTTPS を使用できるようにします。

次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。

設定ファイルは以下のタスクを実行します。
+ `packages` キーは、yum を使用して `mod24_ssl` をインストールします。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/etc/httpd/conf.d/ssl.conf`  
Apache サーバーを設定します。このファイルは、Apache サービスの開始時期をロードします。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

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

```
packages:
  yum:
    mod24_ssl : []

files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule ssl_module modules/mod_ssl.so
      Listen 443
      <VirtualHost *:443>
        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        SSLEngine             on
        SSLCertificateFile    "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol           All -SSLv2 -SSLv3
        SSLHonorCipherOrder   On
        SSLSessionTickets     Off
        
        Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        
        ProxyPass / http://localhost:80/ retry=0
        ProxyPassReverse / http://localhost:80/
        ProxyPreserveHost on
        RequestHeader set X-Forwarded-Proto "https" early
        
      </VirtualHost>
      
  /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-----
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを 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)ことができるようにロードバランサーを設定します。

# Python を実行している EC2 インスタンスの HTTPS を終了する
<a name="https-singleinstance-python"></a>

Web Server Gateway Interface (WSGI) で Apache HTTP Server を使用する Python コンテナタイプの場合、[設定ファイル](ebextensions.md)を使用して、Apache HTTP Server が HTTPS を使用できるようにします。

次のスニペットを[設定ファイル](ebextensions.md)に追加して、証明書とプライベートキーマテリアルを説明に従って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `packages` キーは、yum を使用して `mod_ssl` をインストールします。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/etc/httpd/conf.d/ssl.conf`  
Apache サーバーを設定します。アプリケーションの名前が `application.py` でない場合は、`WSGIScriptAlias` の値内の強調表示されたテキストをそのアプリケーションへのローカルパスに置き換えてください。たとえば、django アプリケーションのものは `django/wsgi.py` にあることがあります。この場所は、お客様の環境用に設定した `WSGIPath` オプションの値と一致する必要があります。  
アプリケーションの要件によっては、**python-path** パラメータに他のディレクトリを追加する必要もあります。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。
+ `container_commands` キーは、すべての設定が完了してから httpd サービスを停止し、httpd サービスが新しい `https.conf` ファイルと証明書を使用できるようにします。

**注記**  
この例は、[Python](create-deploy-python-container.md) プラットフォームを使用する環境のみで動作します。

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

```
packages:
  yum:
    mod_ssl: []
    
files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule wsgi_module modules/mod_wsgi.so
      WSGIPythonHome /var/app/venv/staging-LQM1lest
      WSGISocketPrefix run/wsgi
      WSGIRestrictEmbedded On
      Listen 443
      <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        
        Alias /static/ /var/app/current/static/
        <Directory /var/app/current/static>
        Order allow,deny
        Allow from all
        </Directory>
        
        WSGIScriptAlias / /var/app/current/application.py
        
        <Directory /var/app/current>
        Require all granted
        </Directory>
        
        WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
          python-path=/var/app/current \
          python-home=/var/app/venv/staging-LQM1lest \
          home=/var/app/current \
          user=webapp \
          group=webapp
        WSGIProcessGroup wsgi-ssl
        
      </VirtualHost>
      
  /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-----
      
container_commands:
  01killhttpd:
    command: "killall httpd"
  02waitforhttpddeath:
    command: "sleep 3"
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「[秘密キーを Amazon S3 に安全に保存する](https-storingprivatekeys.md)」を参照してください。

**Amazon Linux 2023 環境に関する注意事項**  
Amazon Linux 2023 では、パッケージリポジトリで使用できないため、`mod_wsgi` を個別にインストールする必要があります。インストール手順については、PyPI の「[mod\$1wsgi](https://pypi.org/project/mod-wsgi/)」を参照してください。

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。

# Ruby を実行している EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-ruby"></a>

Ruby コンテナタイプの場合、HTTPS を有効にする方法は使用するアプリケーションサーバーの種類によって異なります。

**Topics**
+ [

## Puma を使用する Ruby 用の HTTPS を設定する
](#Puma)
+ [

## Passenger を使用する Ruby 用の HTTPS を設定する
](#Passenger)

## Puma を使用する Ruby 用の HTTPS を設定する
<a name="Puma"></a>

アプリケーションサーバーとして Puma を使用する Ruby コンテナタイプの場合、[設定ファイル](ebextensions.md)を使用して HTTPS を有効にします。

次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

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

```
files:
  /etc/nginx/conf.d/https.conf:
    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;
          
          location / {
              proxy_pass  http://my_app;
              proxy_set_header        Host            $host;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto https;
          }

          location /assets {
            alias /var/app/current/public/assets;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }

          location /public {
            alias /var/app/current/public;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }
      }

  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE 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)ことができるようにロードバランサーを設定します。

## Passenger を使用する Ruby 用の HTTPS を設定する
<a name="Passenger"></a>

アプリケーションサーバーとして Passenger を使用する Ruby コンテナタイプの場合、設定ファイルと JSON ファイルの両方を使用してHTTPS を有効にします。

**Passenger を使用する Ruby 用の HTTPS を設定する方法**

1. 次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
   + `files` キーはインスタンスに次のファイルを作成します。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。  
**Example Passenger を使用する Ruby 用 HTTPS を設定するための .Ebextensions スニペット**  

   ```
   files:
     /etc/pki/tls/certs/server.crt:
       content: |
         -----BEGIN CERTIFICATE-----
         certificate file contents
         -----END CERTIFICATE-----
         
     /etc/pki/tls/certs/server.key:
       content: |      
         -----BEGIN RSA PRIVATE KEY-----
         private key contents # See note below.
         -----END RSA PRIVATE KEY-----
   ```
**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「[秘密キーを Amazon S3 に安全に保存する](https-storingprivatekeys.md)」を参照してください。

1. テキストファイルを作成して、ファイルに次の JSON を追加します。作成したファイルを、`passenger-standalone.json` という名前でソースバンドルのルートディレクトリに保存します。この JSON ファイルは、Passenger が HTTPS を使用するように設定します。
**重要**  
この JSON ファイルには、バイト順マーク（BOM）が含まれてはいけません。BOM が含まれていると、Passenger JSON ライブラリはファイルを正しく読み取れず、Passenger サービスは開始されません。  
**Example passenger-standalone.json**  

   ```
   {
     "ssl" : true,
     "ssl_port" : 443,
     "ssl_certificate" : "/etc/pki/tls/certs/server.crt",
     "ssl_certificate_key" : "/etc/pki/tls/certs/server.key"
   }
   ```

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。

# Tomcat を実行している EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-tomcat"></a>

Tomcat コンテナタイプでは、[設定ファイル](ebextensions.md)を使用して、Tomcat 用のリバースプロキシとして機能する際に Apache HTTP サーバーが HTTPS を使用できるようにします。

次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、ソースバンドルの `.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/etc/pki/tls/certs/server.crt`  
インスタンスに証明書ファイルを作成します。*証明書ファイルの内容*をお客様の証明書の内容に置き換えます。  
YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。  
`/etc/pki/tls/certs/server.key`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。  
`/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh`  
httpd サービスを再起動するためのデプロイメント後のフックスクリプトを作成します。

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

```
files:
  /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-----

  /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sudo service httpd restart
```

ポート 443 をリッスンするように、環境のプロキシサーバーも設定する必要があります。次の Apache 2.4 設定では、ポート 443 にリスナーを追加します。詳細については、「[プロキシサーバーを設定します](java-tomcat-proxy.md)」を参照してください。

**Example .ebextensions/httpd/conf.d/ssl.conf**  

```
Listen 443
<VirtualHost *:443> 
  ServerName server-name
  SSLEngine on 
  SSLCertificateFile "/etc/pki/tls/certs/server.crt" 
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" 

  <Proxy *> 
    Require all granted 
  </Proxy> 
  ProxyPass / http://localhost:8080/ retry=0 
  ProxyPassReverse / http://localhost:8080/ 
  ProxyPreserveHost on 

  ErrorLog /var/log/httpd/elasticbeanstalk-ssl-error_log 

</VirtualHost>
```

証明書ベンダーには、モバイルクライアントとの互換性向上のためにインストールできる中間証明書が含まれる場合があります。SSL 設定ファイルに以下を追加することで、中間認証局 (CA) バンドルを使用して Apache を設定します (場所については「[デフォルトの Apache 設定の拡張および上書き — Amazon Linux AMI (AL1)](java-tomcat-proxy.md#java-tomcat-proxy-apache)」を参照)。
+ `ssl.conf` ファイルコンテンツの場合、次の連鎖ファイルを指定:

  ```
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
  SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
  SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  ```
+ 中間証明書のコンテンツを使用して `files` キーに新しいエントリを追加します。

  ```
  files:
    /etc/pki/tls/certs/gd_bundle.crt:
      mode: "000400"
      owner: root
      group: root
      content: |
        -----BEGIN CERTIFICATE-----
        First intermediate certificate
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        Second intermediate certificate
        -----END CERTIFICATE-----
  ```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを 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)ことができるようにロードバランサーを設定します。

# .NET Core on Linux を実行している Amazon EC2 インスタンスでの HTTPS の終了
<a name="https-singleinstance-dotnet-linux"></a>

.NET Core on Linux コンテナタイプでは、`.ebextensions`[設定ファイル](ebextensions.md)で HTTPS を有効にして、nginx 設定ファイルで HTTPS を使用するように nginx サーバーを設定します。

次のスニペットを設定ファイルに追加して、証明書とプライベートキープレースホルダーを説明に沿って置き換え、`.ebextensions` ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
+ `files` キーはインスタンスに次のファイルを作成します。  
`/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`  
インスタンスにプライベートキーのファイルを作成します。*プライベートキーの内容*を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**注記**  
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「[秘密キーを Amazon S3 に安全に保存する](https-storingprivatekeys.md)」を参照してください。

ソースバンドルの `.conf` ディレクトリの `.platform/nginx/conf.d/` 拡張子が付いたファイルに以下を格納します (たとえば、`.platform/nginx/conf.d/https.conf`)。*app\$1port* を、アプリケーションがリッスンするポート番号に置き換えます。この例は、SSL を使用してポート番号 443 を使用するように nginx サーバーを設定しています。.NET Core on Linux プラットフォームの設定ファイルについての詳細は、「[プロキシサーバーを設定します](dotnet-linux-platform-nginx.md)」を参照してください。

**Example .platform/nginx/conf.d/https.conf**  

```
# HTTPS server

server {
    listen       443 ssl;
    server_name  localhost;
    
    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;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
    }
}
```

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。

# .NET を実行している Amazon EC2 インスタンスでの HTTPS の終了
<a name="SSLNET.SingleInstance"></a>

次の[設定ファイル](ebextensions.md)は、以下のタスクを実行する Windows PowerShell スクリプトを作成して実行します。
+ ポート 443 にバインドされる既存の HTTPS 証明書を確認する。
+ Amazon S3 バケットから、[PFX 証明書](configuring-https-ssl.md)とパスワードを取得する。
**注記**  
Amazon S3 バケット内の SSL 証明書にアクセスするには、`AmazonS3ReadOnlyAccess` ポリシーを `aws-elasticbeanstalk-ec2-role` に追加します。
+ パスワードを から取得します AWS Secrets Manager。
**注記**  
証明書パスワードを含むシークレットの `secretsmanager:GetSecretValue` アクションを許可するステートメントを `aws-elasticbeanstalk-ec2-role` に追加します
+ 証明書をインストールする。
+ ポート 443 に証明書をバインドする。
**注記**  
HTTP エンドポイント (ポート 80) を削除するには、`Remove-WebBinding` コマンドをサンプルの「**HTTP バインディングを削除する**」セクションに含めます。

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

```
files:
  "C:\\certs\\install-cert.ps1":
    content: |
      import-module webadministration
      ## Settings - replace the following values with your own
      $bucket = "amzn-s3-demo-bucket"  ## S3 bucket name
      $certkey = "example.com.pfx"    ## S3 object key for your PFX certificate
      $secretname = "example_secret"  ## AWS Secrets Manager name for a secret that contains the certificate's password
      ##

      # Set variables
      $certfile = "C:\cert.pfx"
      $pwd = Get-SECSecretValue -SecretId $secretname | select -expand SecretString

      # Clean up existing binding
      if ( Get-WebBinding "Default Web Site" -Port 443 ) {
        Echo "Removing WebBinding"
        Remove-WebBinding -Name "Default Web Site" -BindingInformation *:443:
      }
      if ( Get-Item -path IIS:\SslBindings\0.0.0.0!443 ) {
        Echo "Deregistering WebBinding from IIS"
        Remove-Item -path IIS:\SslBindings\0.0.0.0!443
      }

      # Download certificate from S3
      Read-S3Object -BucketName $bucket -Key $certkey -File $certfile
      
      # Install certificate
      Echo "Installing cert..."
      $securepwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText
      $cert = Import-PfxCertificate -FilePath $certfile cert:\localMachine\my -Password $securepwd
      
      # Create site binding
      Echo "Creating and registering WebBinding"
      New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
      New-Item -path IIS:\SslBindings\0.0.0.0!443 -value $cert -Force
      
      ## Remove the HTTP binding
      ## (optional) Uncomment the following line to unbind port 80
      # Remove-WebBinding -Name "Default Web Site" -BindingInformation *:80:
      ##
      
      # Update firewall
      netsh advfirewall firewall add rule name="Open port 443" protocol=TCP localport=443 action=allow dir=OUT

commands:
  00_install_ssl:
    command: powershell -NoProfile -ExecutionPolicy Bypass -file C:\\certs\\install-cert.ps1
```

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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)ことができるようにロードバランサーを設定します。