Wie kann ich dem Alias ​​den gewünschten Schlüsseleintrag für SSLSocket mitteilen, bevor ich eine Verbindung herstelle?

Ich habe zwei Zertifikate / Schlüsselpaare in einem Java-Keystore. Aliase dieser Tastatureingaben sind "foo" und "bar".

Mein TLS-Client (Java-Programm) verwendet den Keystore. Die TLS-Clientauthentifizierung wird während des Verbindungsaufbaus durchgeführt. Das Client-Programm sollte die Tasteneingabe "foo" verwenden, wenn der TLS-Server ein Zertifikat vom Client anfordert. Jetzt sendet der Client beim Verbindungs-Handshake ein falsches Zertifikat ("bar") an den Server.

Wie kann ich dem Alias ​​den gewünschten Schlüsseleintrag für SSLSocket mitteilen, bevor ich eine Verbindung herstelle?

Derzeit lautet der Code wie folgt:

final SSLSocket ss = (SSLSocket)SSLSocketFactory.getDefault().createSocket(); 
ss.setEnabledProtocols( new String[] {"TLSv1"});
ss.connect( targetAddress ); 

Antworten auf die Frage(1)

Ihre Antwort auf die Frage