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

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

PHP コンテナタイプについては、設定ファイルを使用して、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

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

例 .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 に安全に保存する」を参照してください。

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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

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