Mit dem browser das Zertifikat im java-Programm
Ich versuche, um HTTP-GET-Anforderung mit HttpURLConnection in java.
Wenn ich mit browser sagt mir Zertifikat nicht vertrauenswürdig ist, wollen Sie gehen.
Ich akzeptiere Zertifikat und GET-request get-Daten. aber ich bin immer certificate exception in java( unten )
Was ich verstanden habe von dieser Ausnahme ist, muss ich den download Zertifikat und setzen diese
- java-system-Eigenschaft bevor machen GET-Anforderung.
Meine Fragen sind.
- Wie herunterladen wird dieses Zertifikat vom browser?
- Kann ich mit browser-Zertifikatspeicher in meinem java-Programm, was muss ich wissen, um zu verwenden?
- Wenn ich installieren möchte-Zertifikat in meinem keystore dann, was muss ich tun?
VIELEN DANK 🙂
Ich versuche, download Zertifikat mithilfe von keytool-Befehl. Ich habe keine Ahnung, wo das Zertifikat gespeichert im server, aber ich gab den Pfad des Servers, welches ich in browser und browser-sagt-Zertifikat nicht vertrauenswürdig ist.
URL gatewayServiceUrl = new URL("http://192.168.55.179:56400/nwa");
HttpURLConnection connection = (HttpURLConnection) gatewayServiceUrl.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", getExample.getBasicAuth());
connection.connect();
if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
System.out.println("success");
System.out.println(getExample.getDataFromStream(connection.getInputStream()));
} else {
System.out.println("success");
System.out.println(getExample.getDataFromStream(connection.getErrorStream()));
}
System.out.println(connection.getResponseCode());
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
at com.testweb.GetExample.main(GetExample.java:18)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 12 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
- u konfigurieren ur SSL-Zertifikat und akzeptieren Sie die Signatur von d-Zertifikat
- Wie kann ich das tun ?
- plz zeigen ur die erste code ..was u versucht, so weit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie den Aussteller der CA des Serverzertifikats (oder direkt das server-Zertifikat im Falle von zum Beispiel Ihre cds eigensignierter) zum truststore, um zu vermeiden, PKIX path builder Ausnahme.
Durch Standard-java-truststore ist auf JAVA_HOME/jre/lib/security/cacerts (Sie können angeben, dass ein anderes trust store mit javax.net.ssl.trustStore-Eigenschaft).
Um dies zu tun, laden Sie zunächst das server-Zertifikat. Herunterladen können Sie das server-Zertifikat-zum Beispiel mit Chrome verbinden, um die server-url und klicken Sie auf den grünen lock, und wählen Sie dann die Registerkarte Verbindung, und klicken Sie auf Zertifikat-Informationen:
Dann speichern Sie dieses Zertifikat auf der DVD.
Nun fügt man dieses Zertifikat in java trust store, können Sie es mit dem java-keytool (wenn in Ihrem Pfad verwenden Sie keytool, wenn nicht keytool ist auf JAVA_HOME/bin/keytool):
Das Standard-Passwort für cacerts ist: changeit
Hoffe, das hilft,
Den anderen Antworten arbeiten, aber ich finde exportieren das Zertifikat im Browser zu lästig sein. Hier meine Schritte zum exportieren dann importieren Sie das Zertifikat alle von der Befehlszeile aus:
https://gist.github.com/jeffsheets/d2880dc1e2ea241b19f140c54809f750
Befehl exportieren Sie ein Zertifikat von einer website zu einer .cer-Datei (Beispiel verwendet google.com):
Befehl importieren in den lokalen java-truststore (verwenden Sie Ihren eigenen Standort, von JAVA_HOME).
Standard-java-keystore-Kennwort changeit
wenn Sie ein update verweigert-Nachricht in der Windows-Datei-Explorer einstellen
Sicherheit auf cacerts-Datei ÄNDERN, die für alle Benutzer (oder chmod unter linux)
ersetzen Sie $JAVA_HOME mit dem vollständigen Pfad)
Ansonsten, Versuchen zu Folgen, Lösung, finden Sie in diesem link: https://stackoverflow.com/a/3685601/2088039
Können Sie exportieren Sie ein Zertifikat mit Firefox, diese Website Anweisungen. Dann nutzen Sie keytool das Zertifikat hinzufügen.