http://domain.com/...
をURLとして入力するとします。 domain.comサーバーは、すべてのHTTPリクエストをHTTPSバージョンに301リダイレクトするため、https://domain.com/...
が表示されます。
ISPは、リクエストを行ったときにHTTPで入力したURL全体(ドメイン名だけでなく)を表示できますか(トラフィックを監視している場合)?
はい。
これが SslStrip が機能する理由です。 (わかりました、理由の1つ。)
HTTPは明白です。したがって、301も同様にクリアです。聞いている人などWiresharkはこれを見ることができます。 (同じホストで試してみてください。簡単です。)
はい。ISPは、HTTPSへのリダイレクトがプレーンHTTPになる前に、URL全体を要求として認識できます。
HTTP Strict Transport Security(HSTS) は、サーバーにブラウザにHTTPS経由でのみ接続するよう通知させることで、これを修正しようとしています。もちろん、ブラウザがサイトのHSTSポリシーを認識していないため、HSTS対応サイトへの最初のリクエストはまだ暗号化されていません。ブラウザベンダーは、HSTS対応サイトのリストを維持することで、これを修正しようとしています。
それがあなた自身の安全のためだけである場合(そして一般的ではない)、 HTTPS Everywhere を使用することもできます。これは、HTTPSを適切にサポートすることが知られているサイトのリストを持つほとんどのブラウザ用のプラグインであり、このプロジェクトはコミュニティ主導であるため、まだリストにはないがHTTPSをサポートするサイトを追加する必要があります。
@StackzOfZtuffの回答に追加するには(まだコメントできないか、そうしません)、HTTPの前とSSL/TLSが関与する前に、実際のホストを参照してTCPハンドシェイクが表示されますリクエストの性質。その後、URL自体は表示されませんが、クライアントからウェブサーバーへのHELOが表示されます。ユーザーとサーバー間でSSLキー交換が行われると、実際のGETを含むデータが暗号化されます。あなたはすでにシーケンスに約9パケット入っています。
HTTPがHTTPSにリダイレクトしている状況では、サーバーから関連するHTTPS URLに送信するための301応答は、ブラウザーが「GET /.txt」を平文で送信するまで発生しません。さらに、暗号化されていないHTTPでも送信されるため、URLを含む301応答は完全に表示されます。
はい、URLは平文で送信されるため、ISPはHTTPリクエストのURLを見ることができます。
さらに、WebサイトがSNI( https://en.wikipedia.org/wiki/Server_Name_Indication )を使用している場合、HTTPSにジャンプした後でも、ISPはURLのホスト名を表示できる場合があります。これは、ますます一般的になりつつあるシナリオです。例( https://aws.Amazon.com/about-aws/whats-new/2014/03/05/Amazon-cloudront-announces-sni-custom-ssl/ )