SSL Verbindung

lernen.2007

Erfahrenes Mitglied
Ich habe ein RSA Public key und mit dem sollte ich per SSL Daten an einem Server senden. Meine erste Frage ist reicht nur eine Public Key um in Java eine SSL Verbindung herzustellen? Wo sollte ich den die Public Key ablegen bzw. es ist zur Zeit in eine doc Datei abgelegt.
 
die Klassen aus javax.net.ssl erledigen schon recht viel.
Das Szenario ohne Clientauthentifizierung (also keine Überprüfung des Clientzertifikates) könnte selbstständig den public key des Servers abfragen und überprüfen. Alternativ wäre die Verwendung eines Truststores in welchem der public key eines Servers gespeichert wird und dieser nicht mehr abgerufen werden muss. Ohne die verwendung eines Truststores, reichen Aufrufe wie folgt:

Java:
try {
    int port = 443;
    String hostname = "hostname";
    SocketFactory socketFactory = SSLSocketFactory.getDefault();
    Socket socket = socketFactory.createSocket(hostname, port);
    InputStream in = socket.getInputStream();
    OutputStream out = socket.getOutputStream();
    in.close();
    out.close();
} catch(IOException e) {
}

Der Umgang mit keystores/truststores ist ein eigenes Thema, dass man sich evtl. sparen kann. Ansonsten kannst du ja dein Szenario noch genauer beschreiben.
 
Grundsätzlich mit der Konsolenanwendung keytool, z.b. :
Code:
keytool -import -alias trusted1 -keystore c:\security\truststore -file c:\security\trusted1.cer
Es gibt allerdings auch grafische Programme dafür (z.b. ikeyman von ibm). Desweiteren sind Format des keystores (ein truststore ist ein keystore, der zur Authentifizierung des Partners verwendet wird) und des Zertifikats wichtig.
Ich würde nach folgendem googlen:
keytool import <keystore-Typ> <Zertifikatstyp>

Der Vorteil ist, man hat alle Parameter beschrieben in diversen howtos. Keystoretyp kann sowas wie jks sein, Zertifikatstyp z.b. cer.

Der truststore liegt dann für die javax.net.ssl-Klassen standardmässig in <java-home>/lib/security/cacerts
 
Zurück