メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

Docker を実行している EC2 インスタンスでの HTTPS の終了

Docker コンテナでは、設定ファイルを使用して 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

    インスタンスにプライベートキーのファイルを作成します。プライベートキーのコンテンツと、証明書リクエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き換えます。

例 .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_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        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;
        }
      }
      
  /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 に安全に保存する」を参照してください。

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 443 のトラフィックを許可する必要があります。次の設定ファイルは、AWS CloudFormation 関数を使用してセキュリティグループの ID を取得し、それにルールを追加します。

例 .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

ロードバランシング環境では、エンドツーエンドの暗号化のために安全なトラフィックを変更なしでパスする複合および暗号化することができるようにロードバランサ―を設定します。