2011-12-16 16 views
8

Chcę nawiązać połączenie z gniazdem serwera SSL za pomocą następującego kodu:Jak naprawić SSL - Brak dostępnych certyfikat

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

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

dostaję "javax.net.ssl.SSLException: Brak certyfikatu lub klucza odpowiada włączonym szyfrom SSL, "podczas akceptowania.

stworzyłem kluczy, który zawiera klucz RSA, używając:

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

i zacznę mój program z następującymi opcjami:

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

Czy tęsknię trochę kodu do odczytu w magazynie kluczy, lub jak mogę przetestować/debugować, czy dany magazyn kluczy jest rzeczywiście używany?

Odpowiedz

7

Wykonałem twój kod i potwierdzam, że działa poprawnie.

upewnić, javax.net.ssl.keyStore punktów dokładnie do pliku kluczy. Umieściłem mój plik magazynu kluczy w katalogu głównym mojego projektu. Być może spróbuj podać absolutną ścieżkę do magazynu kluczy.

Upewnij się, że parametry -D są ustawione jako parametry JVM, a nie opcje programu (w twoim IDE).

Powodzenia, zaraz się uda.

+0

Ponadto: upewnij się, że ssl faktycznie działa bez języka Java. – jayunit100

+0

@ jayunit100: co masz na myśli? – Bruno

+1

Jeśli wskazuje na nieistniejącą ścieżkę, pojawi się 'FileNotFoundException'. "Upewnij się, że parametry -D są ustawione jako paramery JVM" jest najbardziej prawdopodobnym wyjaśnieniem: nie ma domyślnego pliku kluczy w JSSE (więc nie określenie właściwości systemu na wszystkich prowadzi do tego błędu). – Bruno

Powiązane problemy