私はJSSEリファレンスガイドを読んでいましたが、SSL/TLSプロトコルではあまりよく知られていません。 TCP接続で何らかのセキュリティが必要なプロジェクトに取り組んでいますので、最も一般的なプロトコルとしてTLSを選択しました。TLSプロトコルを使用してクライアントとサーバー間の通信に使用する暗号スイート
JSLSリファレンスガイドでSSLSocketとSSLServerSocketのコードを見つけてプロジェクトにコピーしましたが、そのアクションの結果は実際には期待できませんでした。サーバー(Javaアプリケーション)を起動すると、クライアント(Javaアプリケーション)に接続しようとした時点ですべてがうまくいくように見えます。その時点で、SSLHandshakeExceptionが発生しました。共通の暗号スイートはありません。
私の質問は、一般的に暗号スイートあるもの、である(私はそれをグーグルが、私は本当に理解していなかった、初心者のための基本的な解釈は、私は必要なものである)と私が作るために下記のコードを修正する必要がありますか私のプロジェクトは完璧に動作しますか?
のSSLSocket:
import java.io.*;
import javax.net.ssl.*;
. . .
int port = availablePortNumber;
String host = "hostname";
try {
SSLSocketFactory sslFact =
(SSLSocketFactory)SSLSocketFactory.getDefault();
SSLSocket s = (SSLSocket)sslFact.createSocket(host, port);
OutputStream out = s.getOutputStream();
InputStream in = s.getInputStream();
// Send messages to the server through
// the OutputStream
// Receive messages from the server
// through the InputStream
}
catch (IOException e) {
}
はSSLServerSocket:
import java.io.*;
import javax.net.ssl.*;
. . .
int port = availablePortNumber;
SSLServerSocket s;
try {
SSLServerSocketFactory sslSrvFact =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
s = (SSLServerSocket)sslSrvFact.createServerSocket(port);
SSLSocket c = (SSLSocket)s.accept();
OutputStream out = c.getOutputStream();
InputStream in = c.getInputStream();
// Send messages to the client through
// the OutputStream
// Receive messages from the client
// through the InputStream
}
catch (IOException e) {
}
サーバーも無効にします。したがって、証明書がなければ、* no *暗号スイートがサーバーによって有効になります。 – EJP
どうすれば有効にできますか? –