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 ...
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
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