Während der Entwicklung eines Java-Webservice-Clients bin ich auf ein Problem gestoßen. Die Authentifizierung für den Webservice erfolgt über ein Client-Zertifikat, einen Benutzernamen und ein Kennwort. Das Client-Zertifikat, das ich von der Firma hinter dem Webservice erhalten habe, ist im .cer
Format. Wenn ich die Datei mit einem Texteditor überprüfe, hat sie folgenden Inhalt:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Ich kann diese Datei als Zertifikat in Internet Explorer importieren (ohne ein Passwort eingeben zu müssen!) Und sie zur Authentifizierung beim Webservice verwenden.
Ich konnte dieses Zertifikat in einen Schlüsselspeicher importieren, indem ich zuerst die erste und letzte Zeile entfernte, in Unix-Zeilenumbrüche konvertierte und eine base64-Dekodierung ausführte. Die resultierende Datei kann (mit dem keytool
Befehl) in einen Schlüsselspeicher importiert werden . Wenn ich die Einträge im Keystore aufführe, ist dieser Eintrag vom Typ trustedCertEntry
. Aufgrund dieses Eintragstyps (?) Kann ich dieses Zertifikat nicht zur Authentifizierung beim Webservice verwenden. Ich fange an zu denken, dass das bereitgestellte Zertifikat ein öffentliches Zertifikat ist, das zur Authentifizierung verwendet wird ...
Eine Problemumgehung, die ich gefunden habe, besteht darin, das Zertifikat in den IE zu importieren und als .pfx
Datei zu exportieren . Diese Datei kann als Keystore geladen und zur Authentifizierung beim Webservice verwendet werden. Ich kann jedoch nicht erwarten, dass meine Kunden diese Schritte jedes Mal ausführen, wenn sie ein neues Zertifikat erhalten. Daher möchte ich die .cer
Datei direkt in Java laden . Irgendwelche Gedanken?
Zusätzliche Informationen: Das Unternehmen hinter dem Webservice teilte mir mit, dass das Zertifikat (über den Internet Explorer und die Website) vom PC und dem Benutzer angefordert werden sollte, der das Zertifikat später importieren würde.