2011-12-16 28 views
8

Voglio fare una connessione socket server SSL utilizzando il seguente codice:Come risolvere SSL - Nessun certificato disponibile

int port = 12000; 
ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault(); 
ServerSocket ssocket = ssocketFactory.createServerSocket(port); 

// Listen for connections 
Socket socket = ssocket.accept(); 

ottengo "javax.net.ssl.SSLException: Nessun certificato disponibile o chiave corrisponde alle suite di crittografia SSL abilitate. "quando si effettua l'accettazione.

ho creato un archivio chiavi che contiene una chiave RSA utilizzando:

keytool -genkeypair -alias ClubConnectionCert -keyalg RSA -validity 7 -keystore ClubConnectionKeystore 

e comincio il mio programma con le seguenti opzioni:

-Djavax.net.ssl.keyStore=ClubConnectionKeystore -Djavax.net.ssl.keyStorePassword=mypassword 

mi manca un po 'di codice per leggere nel Keystore, o come posso testare/eseguire il debug che il keystore specificato viene effettivamente utilizzato?

risposta

7

Ho eseguito il codice e confermo che funziona correttamente.

Assicurarsi javax.net.ssl.keyStore punti esattamente al vostro file di archivio chiavi. Ho inserito il file del keystore nella radice del mio progetto. Forse prova il percorso assoluto al tuo keystore.

Assicurarsi che i parametri -D siano impostati come parametri JVM, non Opzioni programma (nel proprio IDE).

Buona fortuna, stai per farlo funzionare.

+0

Inoltre: assicurarsi che ssl funzioni effettivamente senza java. – jayunit100

+0

@ jayunit100: cosa intendi? – Bruno

+1

Se punta a un percorso inesistente, si ottiene un 'FileNotFoundException'. "Assicurati che i parametri -D siano impostati come parametri JVM" è la spiegazione più probabile: non esiste un keystore predefinito in JSSE (quindi non specificare affatto la proprietà di sistema porta a questo errore). – Bruno

Problemi correlati