0

httpsサーバーの証明書(公開鍵を使用)によってすでに暗号化されているメッセージがあります。このメッセージをさらに暗号化せずにhttpsサーバーに送信する必要があります(どの言語でも問題ありません)。

実際のケースは次のとおりです。1)サーバー上で証明書https(例:google)を使用して暗号化されたメッセージを作成します。2)このメッセージを友人(例:電子メール)に送信して、友人がメッセージの内容を「読み取る」ことができないようにします。 3)彼はこのメッセージ(暗号化されている)をグーグルに送信し、回答を受け取って読む必要があります。

英語でごめんなさい。ありがとうございます


私はおそらくひどく説明しました:私はpostメソッド(p1、p2)でhttpsサーバーに送信する2つのパラメーターを持っています:

String parms = "p1 = hello&p2 = world"; この文字列は、以下のようにサーバーhttpsの証明書の公開鍵で暗号化されています。

String encParms = encrpythWithCertificate (parms, "/tmp/localhost.localdomain.cer");

次に、この文字列(encParms)を同じ証明書を使用するhttpsサーバーに送信する必要があります。

だから私はこのコードを持っています:

HttpsURLConnection conn = .....
conn.setRequestProperty ("Content-Length", encParms.length ());
OutputStream outputStream = urlCon.getOutputStream ();
outputStream.write (encParms.toByteArray());
outputStream.close ();

parmsを送信すると、すべてが機能します。encParmsを送信しても機能しません。その理由は、encParmsがすでに暗号化されており、サーバーに対して理解できないメッセージを生成するための「2番目の暗号化パス」であるためだと思います。

私の質問は、httpsサーバーがメッセージを正しく受信できるようにメッセージencParmsを送信するにはどうすればよいですか?

4

1 に答える 1

1

HTTPS (正確には SSL レイヤー) は、トランスポート レベルのセキュリティを提供し、チャネル全体を暗号化します。コンテンツの転送は気にしません。通常、メッセージがもう一度暗号化されるかどうかを心配する理由は (シナリオでは) ありません。二重暗号化は転送速度に大きな影響を与えません。SSLには暗号化を無効にするNULL暗号スイートがありますが、前述のように、これはあなたの場合には意味がありません。

于 2013-01-25T08:52:21.427 に答える