Ich habe eine Anwendung, bei der der serverseitige Code den Keystore lädt -
%Vor%Das hat gut funktioniert, als ich nur einen privaten Schlüssel im Keystore hatte. Als ich einen weiteren privaten Schlüssel (mit einem anderen Passwort) zum Keystore hinzufügte, bekam ich diesen Fehler
%Vor%Ich habe dann versucht, einen benutzerdefinierten Schlüsselmanager zu erstellen, wie im folgenden Link angegeben.
@Bruno Ich habe den Vorschlag, den du gegeben hast, ausprobiert. Das funktioniert jedoch nicht. Meine benutzerdefinierte Schlüsselmanagerfabrik sieht so aus -
%Vor%}
Nachdem ich ein Objekt von CustomKeyManager erstellt habe, wenn ich einen Aufruf von getPrivateKey erhalte, bekomme ich einen privaten Schlüssel ungleich Null -
Sun RSA privater CRT-Schlüssel, 1024 Bit Modul: 117260821110864021601500037071432398877761428124640545232618906306796101075244931231861318133902594657774603548686479580347869030216483422242066483203953111970007516384847036243243010603169399491545560497255823475630452314709747201644535089867367118834303975042348737995500693672037616900410158764770570813729 .......
Das sagt mir, dass mein getPrivateKey funktioniert.
Ich benutze den CustomKeyManager auf die folgende Art und Weise
%Vor%Die Ausnahme, die ich bekomme, ist
javax.net.ssl.SSLHandshakeException: keine Cipher Suites allgemein
Gibt es einen Fehler bei der Erstellung und Verwendung des CustomKeyManagers? Die andere Sache von Interesse ist, dass, wenn ich Haltepunkte zu allen Methodeneintrittspunkten im CustomKeyManager setze, keiner von ihnen getroffen wird.
Ihr UnrecoverableKeyException
passiert, weil der Schlüsselverwalter nicht das korrekte Passwort verwendet. Wie Sie sagten, verwenden Ihre zwei privaten Schlüssel unterschiedliche Passwörter.
Der Code, den Sie verlinken, wird hier nicht weiterhelfen, da er lediglich das Verhalten des vorhandenen Keymanagers umschließt, den Sie mit nur einem der beiden Passwörter initialisiert haben.
Wenn Sie wirklich zwei unterschiedliche Passwörter verwenden möchten, müssen Sie getPrivateKey(String alias)
in Ihrem benutzerdefinierten X509KeyManager
implementieren, um dies zu berücksichtigen. Insbesondere müssen die Schlüssel aus Ihrer KeyStore
-Instanz mit dem richtigen Passwort für jeden Alias geladen werden (siehe getKey(String alias, char[] password)
).
Tags und Links java ssl ssl-certificate