Ruby を実行している EC2 インスタンスでの HTTPS の終了 - AWS Elastic Beanstalk

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

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

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

Puma を使用する Ruby 用の HTTPS を設定する

アプリケーションサーバーとして Puma を使用する Ruby コンテナタイプの場合、設定ファイルを使用して 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

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

  • container_commands キーは、すべての設定が完了してから nginx サーバーを再起動することで、サーバーが新しい https.conf ファイルを使用できるようにします。

例 .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----- container_commands: 01restart_nginx: command: "service nginx restart"
注記

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

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

Passenger を使用する Ruby 用の HTTPS を設定する

アプリケーションサーバーとして 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

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

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

  2. テキストファイルを作成して、ファイルに次の JSON を追加します。作成したファイルを、passenger-standalone.json という名前でソースバンドルのルートディレクトリに保存します。この JSON ファイルは、Passenger が HTTPS を使用するように設定します。

    重要

    この JSON ファイルには、バイト順マーク(BOM)が含まれてはいけません。BOM が含まれていると、Passenger JSON ライブラリはファイルを正しく読み取れず、Passenger サービスは開始されません。

    例 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 のトラフィックを許可する必要があります。次の設定ファイルは、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

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