.NET Core on Linux を実行している Amazon EC2 インスタンスでの HTTPS の終了 - AWS Elastic Beanstalk

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

.NET Core on Linux を実行している Amazon EC2 インスタンスでの HTTPS の終了

.NET Core on Linux コンテナタイプでは、.ebextensions設定ファイルで 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

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

  • container_commands キーは、すべての設定が完了してから nginx サーバーを再起動することで、サーバーが nginx 設定ファイルを読み込みます。

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

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

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

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

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