Amazon EC2でのHTTPSのセットアップ


101

Amazon EC2でHTTPSを有効にするにはどうすればよいですか?私たちのサイトはHTTPに取り組んでいます。


良い質問ですが、セキュリティグループを設定してもチャームは発生しません
Shark Deng

回答:


76

まず、HTTPSポート(443)を開く必要があります。これを行うには、https://console.aws.amazon.com/ec2/にアクセスSecurity Groupsして左側のリンクをクリックし、HTTPSも使用できる新しいセキュリティグループを作成します。次に、実行中のインスタンスのセキュリティグループを更新するか、そのグループを使用して新しいインスタンスを作成します。

これらの手順を完了すると、EC2の作業が終了します。これはすべてアプリケーションの問題です。


15
インスタンスが使用するセキュリティグループにポート443の新しいルールを追加できましたが、再起動することなく機能し始めました。
ドミトリーEfimenko 2013

9
you can't change a security group of a running instance, even rebooting-この回答が投稿されてから、この制限は削除されたと思います。
Yuriy Nakonechnyy 14

11
セキュリティグループを変更する必要はありません。変更できますEdit inbound rules
Khoi

8
@ nikhil84は、セキュリティグループにHTTPSを追加することで、手順1であるマシンでポート443のみを開きました。次に、そのマシンでサーバーをセットアップして、(デフォルトのHTTPポート80ではなく)443ポートをリッスンし、HTTPSトラフィックを受け入れる必要があります。どのサーバーを使用していますか?
Yuriy Nakonechnyy

4
@ nikhil84は、ここにリストされているガイドラインに従ってください:digitalocean.com/community/tutorials/…Apache HTTPDでhttpsをセットアップするには
Yuriy Nakonechnyy

40

この回答は、別のサイト(GoDaddyなど)でドメインを購入し、Amazonの無料証明書をCertificate Managerで使用したいユーザーを対象としています

この回答はAmazon Classic Load Balancer(有料)を使用しています。使用する前に価格を確認してください


手順1-証明書マネージャーで証明書を要求する

証明書マネージャー>証明書の要求>公開証明書の要求に移動します

ドメイン名にあなたが追加されますmyprojectdomainname.com*.myprojectdomainname.comして次に行きます

メールの検証を選択し、確認してリクエストする

(ドメインを購入したメールアカウントで)受信したメールを開き、リクエストを承認します

この後、の検証状態かどうかをチェック myprojectdomainname.comし、*.myprojectdomainname.comあなたがステップに進むことができます成功事例のであれば、成功事例のある2

手順2-ロードバランサーにセキュリティグループを作成する

EC2で[セキュリティグループ]に移動し、セキュリティグループを作成して、httpとhttpsの受信を追加します。

それは次のようなものになります: ここに画像の説明を入力してください

ステップ3-ロードバランサーを作成する

EC2>ロードバランサー>ロードバランサーの作成>クラシックロードバランサー(3番目のオプション)

内部にLBを作成します-プロジェクトのvpcロードバランサープロトコルでHttpとHttpsを追加します ここに画像の説明を入力してください

次へ>既存のセキュリティグループを選択

前のステップで作成したセキュリティグループを選択します

次へ> ACMから証明書を選択

ステップ1の証明書を選択します

次へ>

ヘルスチェックでpingパス/を使用しました(/index.htmlの代わりに1つのスラッシュ)

ステップ4-インスタンスをロードバランサーのセキュリティグループに関連付ける

EC2>インスタンス>プロジェクトをクリック>アクション>ネットワーク>セキュリティグループの変更

ロードバランサーのセキュリティグループを追加する

手順5

EC2>ロードバランサー>作成したロードバランサーをクリック> DNS名(Aレコード)をコピーすると、次のようになります。 myproject-2021611191.us-east-1.elb.amazonaws.com

Route 53> Routes Zones>ドメイン名をクリック> Go to Records Setsに移動します(ここにドメインがない場合は、Domain Name: myprojectdomainname.comおよびでホストゾーンを作成しますType: Public Hosted Zone

レコードタイプA(おそらくない)があるかどうかを確認し、名前が空のレコードセットを作成/編集し、タイプA、エイリアスはい、コピーしたDNSをターゲットにします。

タイプA、名前*.myprojectdomainname.com、エイリアスの新しいレコードセットも作成し、ドメインをターゲットにします(myprojectdomainname.com)。これにより、www.myprojectdomainname.comおよびsubsite.myprojectdomainname.comを使用してサイトにアクセスできるようになります。注:リバースプロキシ(Nginx / Apache)を構成する必要があります。

NSでは、次のステップで使用する4つのネームサーバーの値をコピーします。次のようになります。

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

EC2>インスタンス>に移動し、IPv4パブリックIPもコピーします

手順6

ドメインを購入したドメイン登録サイト(私の場合はGoDaddy)

ルーティングをに変更しhttp : <Your IPv4 Public IP Number>、[マスキングで転送]を選択します

ネームサーバー(NS)をコピーした4つのNSに変更します。これが有効になるまでに48時間かかることがあります。


httpsが必要な場合、ロードバランサーを使用する必要がありますか?
カーティス、

私はすべてこれを行いましたが、ブラウザでドメインにアクセスするとERR_CONNECTION_TIMED_OUTが表示されます
Curtis

1
ポート80で新しいターゲットグループを使用してロードバランサーを作成し、リスナーを編集してポート80を使用する必要がありました。ありがとう。
カーティス

1
@Curtisロードバランサーはhttpsを使用する唯一のオプションではなく、EC2内で「暗号化」を構成することもできます
DigaoParceiro

@DigaoParceiroステップ5で何をしましたか?コピーしたDNS名?
Prashant

9

Amazon EC2インスタンスは単なる仮想マシンなので、他のサーバーで設定するのと同じ方法でSSLを設定します。

現在使用しているプラ​​ットフォームについては言及していないため、これ以上情報を提供することは困難です。


こんにちは-私はT2.Micro Amazon Linux EC2インスタンスを実行しています。私はnode.jsを使用してサーバーを支えています。サーバースクリプトでポート443をリッスンしていて、セキュリティグループがポート443に構成されています。HTTPSを有効にするには、他に何が必要ですか?証明書が必要ですよね?Elastic Beanstalkに基づいていない、これを実行するための適切な情報を見つけるのに苦労しています。
Stephen Tetreault 2017年

2
@SMT- 無料の自動更新証明書については、letsencrypt.orgご覧ください。nodeを使用して設定する方法については(googleを介して)たくさんの情報があります。他にAWS / EC2固有のことを行う必要はありません。
ジェフアップルフォード2017年

2
返信いただきありがとうございます!先日実際に機能させて、いくつかの手順を合理化しました。誰かがこれを未来から読んでいる場合:github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault 2017年

5

古い質問ですが、回答で別のオプションに言及する価値があります。ドメインのDNSシステムがAmazon Route 53で定義されている場合は、EC2の前でAmazon CloudFrontサービスを使用して、無料のAmazon SSL証明書をそれにアタッチできます。このようにすると、コンテンツ配信を高速化するためのCDNと、HTTPSプロトコルでドメインを保護することの両方のメリットが得られます。


これを達成するための手順が記載されているリファレンスやブログはありますか?
Saurabh Yadav

このビデオでは、raqumanはamazon証明書マネージャーを使用してssl証明書を取得し、EC2インスタンスでクラウドフロントを構成します。構成後、http / 2は自動的に有効になります。
サチスラディルシャン


2

Elastic Load Balacingを使用すると、アプリケーションインスタンスからのSSL復号のオフロードやSSL証明書の集中管理など、ロードバランサーでのSSL終了がサポートされます。


15
ELBを使用してSSLを提供するだけではなく、実際にはかなり誤解を招く答えになります。サーバーはSSLを提供する必要があります。そのため、ロードバランサーを追加する必要がない場合は、追加コストがかかるだけです。これはソフトウェアのSSL終了でもあるため、ロードバランサーとサーバーの間のSSLは追加の手順であり、パフォーマンスに影響します。
トーマスthe Tank Engine

1
あなたのコメントに同意します。追加のコストがかかり、パフォーマンスに影響します。サーバーの負荷に関する正確な要件がわからないので、それでも解決できるかもしれません。しかし、「あなたのサーバーはSSLを提供する必要がある」というあなたの発言は理解できません。なぜこれが必要なのですか?ロードバランサーには、SSLのオフロードも含まれます。ありがとう。
Peter Hulsen、2011年

2
そうですね。これを使用して簡単な方法でSSLを提供できます。インスタンスには、ユーザーが何らかの理由で直接アクセスできるパブリックDNS値がまだあると考えています。その場合は、SSLを強制的に使用することもできます。
きかんしゃトーマス

私はこのコメントが遅いことを知っていますが、登録済みのドメイン名を使用したい場合は、私の理解から、EC2 IPは「非永続的」と見なされ、SSL証明書を使用できないため、ELBを使用する必要があります。一方、Amazonが提供するDNSだけを使用している場合は、ELBは必要ないかもしれませんが、確認していません。
ヘキシクル2017


0

私が見つけた最高のリソースの1つは、暗号化を使用することでした。EC2インスタンスがHTTPSを持つためにELBもクラウドフロントも必要ありません。次の簡単な手順に従ってください: サーバーにログインを暗号化して、リンクの手順に従ってください。

セキュリティグループを編集してポート443を開くことも、他の人が述べたように重要です

このリンクのサイト名を変更すると証明書またはその他のWebサイトを表示できます

90日間のみ有効であることを忘れないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.