CloudFront ディストリビューションをセットアップしており、ユーザーは CloudFront ディストリビューション経由でドメインに接続し、リクエストが S3 バケットに送信されるか、EC2 インスタンスに送信されるかを決定します。
この場合、ユーザーと CloudFront 間の接続は HTTPS であり、ブラウザに緑色の南京錠が表示されます。
懸念されるのは、CloudFront と EC2 間の接続が HTTP 経由になっていることです。オリジン ポリシーを HTTPS に変更してみましたが、うまくいかないようです。
サーバーは 1 台だけなので、ロード バランサーは必要ありません。
また、CloudFront 証明書の秘密鍵にアクセスできないため、EC2 サーバーに CloudFront 証明書をインストールすることもできないと思います。
また、LetsEncrypt 証明書にはドメイン名が必要ですが、私の EC2 インスタンスは単なる IP アドレスであるため、EC2 インスタンスで LetsEncrypt 証明書を使用することはできません。
今はすべて正常に動作していますが、安全性に問題があるのではないかと心配しています。誰かが自分のサイトにパスワードを入力したらどうなるでしょうか。パスワードはユーザーから CloudFront ディストリビューションに送信されるときにのみ暗号化され、その後 CloudFront と EC2 の間をインターネット経由で移動するときには暗号化されずにプレーンテキストになるのではないでしょうか。途中で仲介者によってログに記録されることはないのでしょうか。
これに対する解決策はあるのでしょうか、それとも問題ではないのでしょうか? CloudFront と EC2 インスタンスの間で HTTP オリジン ポリシーを使用しても問題ないと言っている人が何人かいるのですが、それがなぜ可能なのかよくわからないので、少し混乱しています。
答え1
これに対する答えは多くの側面があります。
CloudFrontエンドポイントは、いわゆるエッジロケーショントラフィックが AWS グローバル インフラストラクチャに入る場所です。CloudFront と EC2 間のトラフィックは、サードパーティのオペレーターを経由せず、AWS インフラストラクチャ経由でのみルーティングする必要があります。
アップデート:AWS グローバルインフラストラクチャページにはこう書かれています:当社のデータセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、当社の安全な施設から送信される前に物理層で自動的に暗号化されます。つまり、相互接続の一部が実際にサードパーティのネットワークを通過する場合でも、それらは常に暗号化されるため、プレーンテキストの HTTP がサードパーティのオペレーターによって表示されることはありません。
EC2 を実行し、CloudFront の SSL 証明書を管理するなど、すでに AWS にデータを信頼しているので、おそらく同じレベルで AWS のネットワークも信頼しているでしょう。AWS 内でプレーンテキスト トラフィックをスヌーピングされるリスクは、まったくないわけではありませんが、かなり低いと言えます。
作成できます自己署名SSL証明書EC2に証明書をアップロードすれば、CloudFrontはEC2オリジンへの到達に問題なく受け入れます。こうすることで、HTTPSをずっと利用できるようになります。この自己署名証明書は、CF <-> EC2 トラフィック、あなたのためではありませんユーザー <-> CF トラフィックなので、問題はありません無効な証明書警告。
お役に立てれば幸いです :)