1

Javaブラウザー (Firefox など) から接続要求を受信し、その要求を解析して統計情報を取得し、その要求を元の宛先に転送する単純なプログラムを作成しています。次に、プログラムは宛先からの応答を読み取り、応答を解析して統計情報を取得し、応答をブラウザーに転送します。

この操作の擬似コードは次のとおりです。

// Accept connection from browser and read request
1. Socket browserConnection = serverSocket.accept();
2. browserConnection.getInputStream().read(buffer);
3. SocketInetAddress destInetAddress = parseHttpRequest(buffer);

// Connect to destination and forward request
4. Socket destConnection = new Socket(destInetAddress);
5. destConnection.getOutputStream().write(buffer);

// Read response from destination
6. destConnection.getInputStream().read(buffer);
7. parseHttpResponse(buffer);

// Forward response to browser
8. browserConnection.getOutputStream().write(buffer);

これは HTTP 接続でうまく機能しますが、私はconnection resetHTTPS 接続を取得しています。

注 : HTTP 接続と HTTPS 接続の違いはわかっています。HTTP とは異なり、一度だけではなく、sendいくつかのreceives. reads必要なだけ、また必要なだけ、HTTPS 用の私のコードwrites

HTTPS サーバー (例: https://www.google.comhttps://www.comodo.comなど) から接続がリセットされるのはなぜですか?

4

2 に答える 2

0

HTTPS は、中間者攻撃の発生を防ぐために保護されています。あなたが話しているのは、それが正当であるかどうかにかかわらず、中間者攻撃がどのようなものかということです。HTTPS を使用すると、別の宛先に向けられたパケットを傍受して読み取ることはできません。ただし、パケットを自分宛てに送信し、クライアントにセキュリティ証明書を提供し、パケットをデコードし、必要に応じて処理し、再エンコードして、別の宛先に渡すことができます。違いは、クライアントはあなたが存在し、あなたが誰であるかを知らなければならないということです. そうしないと、HTTPS を使用して通信することができません。

于 2013-03-14T18:06:27.660 に答える