N
nijoX
Neues Mitglied
- 5
Moin Community,
Ich bin atm an einer App dran bei der mit verschiedenen (vom nutzer eingegebenen) Webseiten kommuniziere. Das klappt soweit auch ganz gut, bis auf den Fall wenn man ein Sicherheitszertifikat benötigt. Habe nun schon einige Beispiele die ich gefunden habe versucht zu Implementieren, Problem dabei ... irgendwie wird es komplett ignoriert wie mir scheint.
Der Code, zum "ignorieren" der Zertifikate, sieht momentan so aus
Den Client im Code erstelle ich so:
Wenn ich nun versuche auf die seite zu gelangen bekomme ich im LogCat folgendes
Ich hoffe es gelingt jemandem meinen wahrscheinlich trivialen Fehler zu entdecken und mir weiter zu helfen
EDIT: Hab soeben rausgefunden, dass wenn ich versuche mich mit einer Webseite ohne Zertifikat zu verbinden, der gleiche Fehler auftritt.
MfG nijoX
Ich bin atm an einer App dran bei der mit verschiedenen (vom nutzer eingegebenen) Webseiten kommuniziere. Das klappt soweit auch ganz gut, bis auf den Fall wenn man ein Sicherheitszertifikat benötigt. Habe nun schon einige Beispiele die ich gefunden habe versucht zu Implementieren, Problem dabei ... irgendwie wird es komplett ignoriert wie mir scheint.
Der Code, zum "ignorieren" der Zertifikate, sieht momentan so aus
Code:
public final static class WebClientDevWrapper {
public static HttpClient wrapClient(HttpClient base) {
try {
SSLContext ctx = SSLContext.getInstance("SSL");
X509TrustManager tm = new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain,
String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain,
String authType)
throws CertificateException {
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(null);
ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = base.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", ssf, 443));
return new DefaultHttpClient(ccm, base.getParams());
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}
Code:
HttpClient client = new DefaultHttpClient(); //unwichtiges weggelassen ;)
client = WebClientDevWrapper.wrapClient(client);
String postURL = "http://bli.bla.blubb";
HttpPost post = new HttpPost(postURL);
post.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials(username, password), "UTF-8", false));
client.execute(post);
Code:
09-02 10:20:10.470: WARN/System.err(5073): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:258)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-02 10:20:10.470: WARN/System.err(5073): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-02 10:20:10.480: WARN/System.err(5073): at my.package.name.AndroidPxAppActivity.login(AndroidPxAppActivity.java:89)
09-02 10:20:10.480: WARN/System.err(5073): at my.package.name.AndroidPxAppActivity$2.onClick(AndroidPxAppActivity.java:174)
09-02 10:20:10.480: WARN/System.err(5073): at android.view.View.performClick(View.java:2485)
09-02 10:20:10.480: WARN/System.err(5073): at android.view.View$PerformClick.run(View.java:9080)
09-02 10:20:10.480: WARN/System.err(5073): at android.os.Handler.handleCallback(Handler.java:587)
09-02 10:20:10.480: WARN/System.err(5073): at android.os.Handler.dispatchMessage(Handler.java:92)
09-02 10:20:10.480: WARN/System.err(5073): at android.os.Looper.loop(Looper.java:123)
09-02 10:20:10.480: WARN/System.err(5073): at android.app.ActivityThread.main(ActivityThread.java:3695)
09-02 10:20:10.480: WARN/System.err(5073): at java.lang.reflect.Method.invokeNative(Native Method)
09-02 10:20:10.480: WARN/System.err(5073): at java.lang.reflect.Method.invoke(Method.java:507)
09-02 10:20:10.480: WARN/System.err(5073): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
09-02 10:20:10.480: WARN/System.err(5073): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
09-02 10:20:10.480: WARN/System.err(5073): at dalvik.system.NativeStart.main(Native Method)
EDIT: Hab soeben rausgefunden, dass wenn ich versuche mich mit einer Webseite ohne Zertifikat zu verbinden, der gleiche Fehler auftritt.
MfG nijoX
Zuletzt bearbeitet: