HTTPS mit Apache HttpClient

Status
Nicht offen für weitere Antworten.

Q-Base

Aktives Mitglied
Hallo,

zwar habe ich den SSL Guide (http://hc.apache.org/httpclient-3.x/sslguide.html) durch, aber trotzdem bekomme ich keine Verbindung per HTTPS. Meine Verbindungen per HTTP funktionieren. Egal wie ich die Verbindung etablieren will, quittiert mir die API mit einer Exception ...
Code:
[...] PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: \
unable to find valid certification path to requested target
	at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
	at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
	at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
	at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
	at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
	at java.io.BufferedOutputStream.flush(Unknown Source)
	at java.io.FilterOutputStream.flush(Unknown Source)
	at org.apache.commons.httpclient.methods.StringRequestEntity.writeRequest(StringRequestEntity.java:146)
	at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
	at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
	at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)

Debuggen hilft auch nicht viel, denn genau der Teil ist in einer Bibliothek ohne Sourcen.

Auf dem Server läuft natürlich ein selbst signiertes Zertifikat, dass nur zum Verschlüsseln gedacht ist. Aber es sollte doch trotzdem funktionieren (?!) .

Im Internet finde ich in Foren auch Klassen wie AuthSSLProtocolSocketFactory und EasySSLProtocolSocketFactory, die im 'contrib'-Package liegen sollen. Dieses Package gibt es aber bei meiner Version 3.1 von HttpClient gar nicht. Liegt es vielleicht daran?

Ciao, Q
 

Q-Base

Aktives Mitglied
Hallo,

also ich habe nun mit einigen Zeilen Code aus dem Internet probiert. Also wenn ich SSLSockets selbst erzeuge und einen TrustManager implementiere, dann kann ich auch selbst signierte Zertifikate speichern und akzeptieren. Aber im Prinzip bringt mich das ja gar nicht weiter, denn ich müsste ja HttpClient dazu bekommen, das Zertifikat zu akzeptieren. Selbst wenn ich es ist einem KeyStore speichern könnte, müsste ich ja auch als vertrauchenswürdig laden können.

Und das kann ich nicht.
Hat das schonmal jemand gemacht?

Ciao, Q


Qullen aus dem Internet:
http://blogs.sun.com/andreas/entry/no_more_unable_to_find
http://blogs.sun.com/andreas/resource/InstallCert.java
EasySSLProtocolSocketFactory.java
 

FArt

Top Contributor
Wie es aussieht, kann der Pfad zu einer "trusted authority" nicht aufgelöst werden. Vermutlich hast du das selbstgebaute Zertifikat im Client-Keystore nicht importiert oder der entsprechende Keystore wird nicht verwendet.

Mit Sicherheit weicht deine Implementierung von den Beispielen ab, denn die funktionieren alle.
Vergleiche noch mal genau und nimm die passende Version der API.

Das hier kann auch helfen: http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/ReadDebug.html
 

Q-Base

Aktives Mitglied
Hallo FArt,

also das Beispiel selbst kann ich auch benutzen, wenn es ein 'richtiges' Zertifikat ist. https://www.verisgn.com ist kein Problem. Sobald ich meinen Host auch nur mit dem einfachsten Get anfrage, bekomme ich diese lange Fehlermeldung. Du wirst also sicher Recht haben, dass ich die "trusted authority" nicht korrekt mache. Ich habe nur noch kein Beispiel gefunden, in dem ich bei HttpClient einen KeyStore verwenden kann.

Ich schaue mir deinen Link später an. Wünsche einen schönen Abend.

Ciao, Q
 

FArt

Top Contributor
Das könnte daran liegen, dass der Default-Keystore verwendet wird und dort Verisign als trusted authority eingetragen ist.

Ein selbst gemachtes Zertifikat musst du beim Server und Client in den Keystore importieren und diesen dann verwenden.

Begriffe für Google:
java custom keystore
java tutorial keystore
java tutorial ssl
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Thallius HTTP Kann man den Raw HTTPS Request irgendwie ausgeben lassen? Netzwerkprogrammierung 6
G localhost im Backend https vs. http Netzwerkprogrammierung 9
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
M HTTPS Login & etwas posten Netzwerkprogrammierung 0
M Proxy und HTTPS Netzwerkprogrammierung 3
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
agent47 HTTPs Server Netzwerkprogrammierung 5
GENiALi Grizzly mit HTTPS Netzwerkprogrammierung 0
N Hintergrundlogin HTTPs Webform Netzwerkprogrammierung 5
E Gruppenchat: Über HTTPS oder nicht? Netzwerkprogrammierung 5
K HTTPS Zertifikat Netzwerkprogrammierung 3
F C/S über HTTPS Netzwerkprogrammierung 2
NoXiD Java mit HTTPS verbinden Netzwerkprogrammierung 6
T Up- und Download mit https Netzwerkprogrammierung 14
M HTTP HTTPS-Verbindung mittels Java und Javascript Netzwerkprogrammierung 2
T HTTPS einloggen Netzwerkprogrammierung 9
L Https Verbindung wird aus jar heraus nicht aufgebaut Netzwerkprogrammierung 12
E HTTPS Debuggen (verschlüsselte Daten anzeigen)? Netzwerkprogrammierung 12
M HTTPS Seiten runterladen Netzwerkprogrammierung 2
A HTTPS-Request via Proxy mit Konfigurationsskript Netzwerkprogrammierung 3
P HTTPS - öffentliches Zertifikat - ermitteln Netzwerkprogrammierung 5
G file download über https mit p12 Zertifikat Netzwerkprogrammierung 4
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
G apache httpClient Problem. Netzwerkprogrammierung 5
D Apache Mina Serial: Error Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
W HTTP Apache HttpComponents und GZIP Netzwerkprogrammierung 2
F Apache commons net SFTPClient Netzwerkprogrammierung 5
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
R Apache Mina - Hilfestellung Netzwerkprogrammierung 32
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
N SFTP apache keine Verbindungaufbau möglich Netzwerkprogrammierung 6
K Login via apache httpclient Netzwerkprogrammierung 4
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
Kr0e Apache Mina -> await() Netzwerkprogrammierung 30
B Tomcat Apache Server Netzwerkprogrammierung 6
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Kr0e Apache Mina Problem Netzwerkprogrammierung 2
G apache von außen zugänglich machen Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4
A http request per socket an apache server Netzwerkprogrammierung 5
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
B HttpClient Netzwerkprogrammierung 2
M HTTP HTTPClient Authentication - Quickr Server Netzwerkprogrammierung 8
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
F FileUpload mit commons HttpClient Netzwerkprogrammierung 17
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
H Bilder mit HttpClient hochladen Netzwerkprogrammierung 3
T HttpClient - Senden via Post Netzwerkprogrammierung 12
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
M Seltsame Fehlermeldung (httpclient) Netzwerkprogrammierung 6
A Jakarta Commons HTTPClient: Mehrere Requests gleichzeitig Netzwerkprogrammierung 2
E HttpClient und return Problem Netzwerkprogrammierung 6
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
J Jakarta HTTPClient Netzwerkprogrammierung 5
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
S mit HttpClient Seiteninhalt lesen Netzwerkprogrammierung 8
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben