Sto cercando di fare una connessione SSL con Socket Java.
Ma ho il seguente problema
Scrivo il codice incriminato:
codice:
//Carico il Key Store
objKeyStore.load(new FileInputStream(certificato_kst), arrpassword);
//Carico Trust Store
objKeyManagerFactory.init(objKeyStore, arrPassword_kst);
// Trust Store
MakeKeyStore objMakeTrustStore = new MakeKeyStore();
KeyStore objTrustStore = objMakeTrustStore.getKeyStore();
// Carico il Trust Store
objTrustStore.load(new FileInputStream(certificato_kst), arrPassword_tru);
// Trust Manager
MakeTrustManagerFactory objMakeTrustManagerFactory = new MakeTrustManagerFactory();
TrustManagerFactory objTrustManagerFactory = objMakeTrustManagerFactory.getTrustManagerFactory();
objTrustManagerFactory.init(objTrustStore);
objSSLContext.init(objKeyManagerFactory.getKeyManagers(), objTrustManagerFactory.getTrustManagers(), null);
objSSLSocketFactory = objSSLContext.getSocketFactory();
echoSocket =(SSLSocket)objSSLSocketFactory.createSocket("10.16.10.9", 4000);
echoSocket.setSoTimeout(timeout);
alServer = new PrintWriter(echoSocket.getOutputStream(), true);
dalServer = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
response="";
/*
String messaggioDalServer = "";
while(messaggioDalServer != null && !messaggioDalServer.trim().equals(""))
{
messaggioDalServer = dalServer.readLine();
System.out.println(messaggio);
if(messaggioDalServer != null && !messaggioDalServer.trim().equals(""))
{
messaggioDalServer = objBufferedReader.readLine();
}
}
*/
System.out.println("--- PRIMA DI FARE alServer.print(messaggio) ");
alServer.print(messaggio);
System.out.println("--- DOPO alServer.print(messaggio) ");
alServer.flush();
System.out.println("--- HO FATTO ANCHE alServer.flush() ");
char[] b= new char [2000];
System.out.println(" --- PRIMA DI FARE dalServer.read(b) ---");
dalServer.read(b);
System.out.println(" --- DOPO dalServer.read(b) ---");
for (int i=0;i<b.length;i++)
{
System.out.println(" --- Sto nel ciclo ---");
if (b[i]!=0)response+=b[i];
}
System.out.println(" --- DOPO IL CICLO ---");
System.out.println(response);
// close();
}
catch(Exception e)
{
System.out.println("Errore Socket");
e.printStackTrace();
}
Ecco l'errore:
codice:
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.read1(Unknown Source)
at java.io.BufferedReader.read(Unknown Source)
at java.io.Reader.read(Unknown Source)
at ssl.client.SSLClientAction.pincoPalloSocketNonProtetto(SSLClientAction.java:536)
it.pincoPallo.main(BatchCreazioneNuovePolizzeArag.java:809)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at java.io.PrintWriter.flush(Unknown Source)
at ssl.client.SSLClientAction.miometodo(SSLClientAction.java:532)
... 3 more
GRAZIE Anticipatamente
PS. L'errore è scatenato da questa riga: dalServer.read(b);