HTTPは暗号化されていません。HTTPクライアントとサーバー間のパケットをスニッフィングできるネットワークスニファ(ほとんどのネットワークアダプタは、この目的のためにプロミスキャスモードをサポートしています)は、HTTPデータを表示できます。
一方、HTTPSデータは、SSL/TLSで暗号化されたHTTPデータです。SSL / TLSは、アウトバウンドデータがネットワークに到達する前に暗号化し、インバウンドデータがネットワークを離れた後に復号化します。ネットワーク上にプレーンテキストがないため、パケットがサードパーティによってスニッフィングされているかどうかは関係ありません。暗号化キーがないと、盗聴されたデータはゴミになります。SSL / TLSハンドシェイク中に、クライアントとサーバーは、アプリケーションデータを交換する前に、暗号化キーや証明書などを相互にネゴシエートします。サーバーに送信されるデータはサーバーのキーを使用して暗号化され、クライアントに送信されるデータはクライアントのキーを使用して暗号化されます。これにより、クライアントから送信された暗号化データはサーバーでのみ復号化でき、その逆も可能です。
SSL / TLS暗号化接続からプレーンテキストを傍受して抽出する唯一の方法は、man-in-the-middle攻撃を使用することです。これは、SSLクライアントがMITMに接続し、次にMITMがSSLサーバーに接続し、それらの間でデータをファネルすることを意味します。MITMは、クライアントまたはサーバーが実行されているネットワークにアクセスする必要があり、クライアントの接続をサーバーではなくそれ自体に再ルーティングできる必要があります。ただし、それが可能な場合、MITMは、必要なすべての暗号化情報を保持できるように、両方の当事者と独自のSSL/TLS接続をネゴシエートできます。次に、SSLクライアントとネゴシエートした暗号化キーを使用してSSLクライアントの送信データを受信および復号化し、SSLサーバーとネゴシエートした暗号化キーを使用してそのデータを再暗号化してSSLサーバーに渡します。およびその逆。SSLクライアントとSSLサーバーは、証明書を使用してSSLクライアントとSSLサーバーが最初のハンドシェイク中に互いのIDを確認できるようにしない限り、相互にではなくMITMと通信していることを認識しません。SSL / TLSは証明書を必要としませんが、証明書を持っている場合は証明書を使用すると便利です。