Frage

Während ich mit HTTPS und das Konzept der SSL vertraut bin, ich habe eine gewisse Entwicklung vor kurzem begonnen und fand ich bin ein wenig verwirrt.

Die Anforderung war, dass ich eine kleine Java-Anwendung schreiben, läuft auf einer Maschine an einen Scanner angeschlossen. Wenn ein Dokument gescannt wird dies aufgenommen und die Datei (in der Regel PDF) gesendet, das Internet zu unserem Anwendungsserver über die sie dann verarbeitet. Ich habe die Anwendung mit Apache Commons Bibliotheken geschrieben und Httpclient.

Die zweite Voraussetzung war über SSL zu verbinden, ein Zertifikat erforderlich ist. Nach Anleitung auf der Seite, die ich Httpclient AuthSSLProtocolSocketFactory von den Beiträgen Seite verwenden.

Der Konstruktor kann einen Schlüsselspeicher nehmen, Schlüsselspeicher-Passwort, und Truststrusts Passwort. Als erster Test aktiviert unsere DBA SSL auf einem unserer Entwicklung webservers und versorgte mich mit einer P12-Datei, die, wenn ich in IE importiert mich erfolgreich anschließen können.

Ich bin ein wenig verwirrt zwischen Schlüsselspeicher und Truststores und welche Schritte ich brauche die keytool zu nehmen verwenden. Ich habe versucht, die p12 in eine Schlüsselspeicherdatei zu importieren, aber den Fehler:

keytool error: java.lang.Exception: Input not an X.509 certificate

folgte ich einen Vorschlag des p12 in Internet Explorer importieren und exportieren als cer, die ich kann dann erfolgreich in einen Schlüsselspeicher importieren. Als ich dies als Schlüsselspeicher Argument des AuthSSLProtocolSocketFactory Ich liefere eine bedeutungslose errror bekommen, aber wenn ich es als Trusts versuchen scheint es, wie es es gut liest, aber letztlich erhalte ich

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate

Ich bin nicht sicher, ob ich ein paar Schritte verpasst haben, ich bin Missverständnis SSL und gegenseitige Authentifizierung ganz oder ist dies eine Fehlkonfiguration auf der Server-Seite.

zur Verfügung stellen kann jemand Vorschläge oder mich auf Ressourcen verweisen, die helfen könnte mir dies herauszufinden, bitte?

War es hilfreich?

Lösung

Der Schlüsselspeicher hält Ihre privaten Schlüssel und die zugehörigen Zertifikate. Die Trusts halten die Zertifikate, dass Sie vertrauen, und die daher für Zertifikatspfad Bildung und Verifikation verwendet werden.

Hier sind einige Links, die nützlich sein können:

java.lang.Exception: Eingabe nicht ein X.509-Zertifikat

Import private Schlüssel und das Zertifikat in Java Key Store

Konfigurieren von Schlüsselspeicher und Truststores

Andere Tipps

stellen Sie sicher, Ihre Zertifikatsdatei nichts hat, vor und nach diesen.

----- BEGIN CERTIFICATE -----

----- END CERTIFICATE -----

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top