Elastic Beanstalk 環境用に HTTPS を設定する - AWS Elastic Beanstalk

Elastic Beanstalk 環境用に HTTPS を設定する

Elastic Beanstalk 環境用にカスタムドメイン名を購入して設定した場合は、お客様のウェブサイトにユーザーがセキュアに接続できるように、HTTPS を使用できます。ドメイン名を所有していない場合でも、開発およびテスト目的に自己署名証明書で、HTTPS を使用できます。HTTPS は、ユーザーデータやログイン情報を送信するいずれのアプリケーションにも必須です。

Elastic Beanstalk 環境で HTTPS を使用する最も簡単な方法は、お客様の環境のロードバランサーにサーバー証明書を割り当てることです。HTTPS を終了するようにロードバランサーを設定すると、クライアントとロードバランサーとの間の接続はセキュアになります。ロードバランサーと EC2 インスタンスとの間のバックエンド接続では HTTP が使用されるため、インスタンスの追加の設定は必要ありません。

注記

AWS Certificate Manager (ACM) を使用すると、ドメイン名の信頼された証明書を無料で作成できます。ACM 証明書は、AWS ロードバランサーと Amazon CloudFront ディストリビューションでのみ使用できます。また、ACM は、特定の AWS リージョンでのみ使用可能です。

Elastic Beanstalk で ACM 証明書を使用するには、「HTTPS を終了するよう Elastic Beanstalk 環境のロードバランサーを設定する」を参照してください。

単一インスタンスの環境でアプリケーションを実行したり、ロードバランサーの背後で EC2 インスタンスまで接続をセキュリティで保護する必要がある場合は、HTTPS を終了するように、インスタンス上で実行されるプロキシサーバーを設定できます。HTTPS 接続を終了するようにインスタンスを設定するには、設定ファイルを使用して、インスタンスで実行されるソフトウェアを変更し、セキュアな接続を許可するようにセキュリティグループを変更する必要があります。

負荷分散環境でのエンドツーエンドの HTTPS の場合、インスタンスとロードバランサーの終了を組み合わせて、両方の接続を暗号化できます。デフォルトでは、HTTPS を使用するトラフィックを転送するようにロードバランサーを設定した場合、ロードバランサーはバックエンドインスタンスによって提示された証明書をすべて信頼します。セキュリティを最大限に高めるには、インスタンスによって提示された公開証明書をロードバランサーが信頼しない場合にそのインスタンスへの接続を禁止するポリシーを、ロードバランサーにアタッチできます。

注記

また、HTTPS トラフィックを復号せずに中継するように、ロードバランサーを設定することもできます。この方法の欠点は、ロードバランサーがリクエストを見ることができないため、ルーティングを最適化したり、応答メトリクスをレポートしたりできないことです。

ACM がお客様のリージョンで使用できない場合は、信頼された証明書を第三者から購入できます。第三者からの証明書はロードバランサー、バックエンドインスタンス、またはその両方で HTTPS トラフィックの復号に使用できます。

開発およびテスト目的で、オープンソースのツールを使用して自分で証明書を作成して署名できます。自己署名証明書は無料で簡単に作成できますが、公開サイトのフロントエンド復号化に使用することはできません。クライアントへの HTTPS 接続に自己署名証明書を使用しようとした場合、ユーザーのブラウザではウェブサイトが安全でないことを示すエラーメッセージが表示されます。ただし、バックエンド接続の保護に自己署名証明書を使用することは問題ありません。

ACM は、プログラムで、または AWS CLI を使用してサーバー証明書をプロビジョン、管理、デプロイするための推奨ツールです。ACM がお客様の AWS リージョンで使用可能でない場合は、AWS CLI を使用して、AWS Identity and Access Management (IAM) にサードパーティー証明書または自己署名証明書とプライベートキーをアップロードできます。IAM に保存されている証明書をロードバランサーと CloudFront ディストリビューションで使用できます。

注記

GitHub のDoes it have Snakes? サンプルアプリケーションには、Tomcat ウェブアプリケーションで HTTPS を設定する方法別に設定ファイルと手順が含まれています。詳細については、readme ファイルHTTPS に関する手順を参照してください。