web-dev-qa-db-ja.com

AWS Elastic Load Balancer、Nginx、SSLによる完全なエンドツーエンドの暗号化

ウェブ上にたくさんの places が表示され、AWS ELBでSSLを設定する方法は、ロードバランサーで証明書を設定してから、トラフィックをポート443から80に転送してトラフィックがロードバランサーとnginxの間は暗号化されていません。暗号化されていないデータがネットワーク接続を経由して流れるため、私にはこれはあまり安全ではないように見えます。そのデータがクレジットカード情報である場合はどうなりますか?

私の質問:

  1. ロードバランサーとnginxの間に暗号化されていない接続があると、セキュリティリスクが発生しますか?
  2. 1の答えが「はい」の場合、ロードバランサーからの安全な接続を許可するようにnginxをどのように設定しますか?
  3. これには、各nginxサーバーでのSSL証明書の設定が含まれますか?
  4. Nginxがロードバランサーの背後にない標準のSSLセットアップとは異なる必要がある場合、nginxの構成はどのようになりますか?
3
JamieD

ロードバランサーとnginxの間に暗号化されていない接続があると、セキュリティリスクが発生しますか?

  • クレジットカードのデータやこのようなものについて話している場合:はい。

1の答えが「はい」の場合、ロードバランサーからの安全な接続を可能にするためにnginxをどのように設定しますか?これには、各nginxサーバーでのSSL証明書の設定が含まれますか?

  • nginx configは/かなり標準的で、派手なものは何もありません。
  • はい、nginxを実行している各マシンにssl証明書が必要です。これには1つの証明書を使用できますが、必ずしも複数である必要はありません。さらに: Lets Encrypt を使用すると、証明書を無料で取得することが非常に簡単で自動化されます。
  • ELBとマシン間で機密データを送信する場合は、この/これらのリンクも暗号化されていることを確認してください。これを行う方法は説明されています ドキュメント内

Nginxがロードバランサーの背後にない標準のsslセットアップと異なる必要がある場合、nginx構成はどのように見えますか?

  • 私の知る限り、大きな違いはありません。何らかの理由でクライアントIPが必要な場合は、これらの行をnginx構成に追加します。

    real_ip_header X-Forwarded-For;
    set_real_ip_from ${ip-of-your-elb}/${netmask-of-your-elb};
    


  • ボーナス:たとえば、すばらしい HAProxy を使用して、「独自のELB」を設定します。このようにすると、https、sshトンネル、VPNなど、適切と思われるものを使用して、ELBとバックエンドマシン間の暗号化を自分で処理できます。
5
gf_