객체 전송을 위해 보안 통신을 사용하는 클라이언트 - 서버 자바 프로그램이 있습니다 (객체 입력 및 출력 스트림 사용). 이 프로그램은 다중 클라이언트 프로그램이며 각 클라이언트에 대해 별도의 스레드가 사용됩니다.SSL 소켓에서 객체 스트림을 사용하는 중에 오류가 발생했습니다.
final static private ServerSocketFactory serverFactory
= SSLServerSocketFactory.getDefault();
final static private SocketFactory clientFactory = SSLSocketFactory.getDefault();
serverSocket
= serverFactory.createServerSocket
(port, 0, InetAddress.getByName("192.168.1.2"));
while(running) {
clientSocket = serverSocket.accept();
System.out.println("Client connected :: " + clientSocket);
System.out.println("Creating client thread...");
Client c = new Client(count++, clientSocket);
c.T.start();
}
다음은 클라이언트가 요청 처리 할 스레드 :
Client(int id, Socket cs){
T = new Thread(this, "Client Thread" + id);
this.socket = cs;
this.id = null;
try{
input = new ObjectInputStream(cs.getInputStream());
output = new ObjectOutputStream(cs.getOutputStream());
successful = true;
}catch(IOException ex){
successful = false;
}
}
클라이언트 프로그램의 코드는 매우 유사하다 여기에 아래의 코드 예제이다. 두 프로그램을 모두 실행하고 클라이언트에서 서버로 요청을 보내면 서버가 요청을 수락하지만 소켓에서 객체 스트림을 검색 한 행에 실행이 도달하면 오류가 발생합니다. javax.net. ssl.SSLHandshakeException : 공통 암호 스위트 없음
아무도 도와 줄 수 있습니까? 그리고 Java GUI에서 클라이언트와 서버 간의 보안 통신을 사용하는 더 나은 방법이 있습니까?
사용중인 클라이언트 및 서버 유형은 무엇입니까? JVM 유형, 플랫폼, OS, ... IMHO ObjectStream은 다른 플랫폼간에 종종 호환되지 않는 데이터 객체를 전송할 때 좋지 않습니다. – Robert
나는 그것이 어떤 타입인지 전혀 모른다. (처음으로 클라이언트 - 서버 응용 프로그램에 ** 유형 ** 속성이 있다고 들었음). 이 예외로 이어질 수있는 문제점은 무엇입니까? –
SunJDK, OpenJDK, Android 등 다양한 Java VM이 수십 가지 있습니다. 물론 다른 버전으로도 존재하며 서로 다른 SSL/TLS 암호를 지원합니다. – Robert