web-dev-qa-db-fra.com

Impossible de valider la signature du certificat?

J'utilise le SSL Socket et Trustmanager de ce côté Auto-signature SSL

mais je continue à avoir l'erreur suivante:

09-28 19: 52: 41.942: WARN/System.err (10101): javax.net.ssl.SSLHandshakeException: org.bouncycastle.jce.exception.ExtCertPathValidatorException: Impossible de valider la signature du certificat.

Qu'est-ce qui ne va pas? J'ai déjà vérifié différents articles sur stackoverflow mais je ne peux pas sembler le faire fonctionner.

Mon code:

SchemeRegistry schemeRegistry = new SchemeRegistry();

// http scheme

schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

// https scheme

schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
params = new BasicHttpParams();
params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 1);
params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1));
params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "utf8");
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope("www.example.com", AuthScope.ANY_PORT),
    new UsernamePasswordCredentials("user", "password"));
clientConnectionManager = new ThreadSafeClientConnManager(params, schemeRegistry);
context = new BasicHttpContext();
context.setAttribute("http.auth.credentials-provider", credentialsProvider);

DefaultHttpClient client = new DefaultHttpClient(clientConnectionManager, params);

HttpGet get = new HttpGet("https://www.example.com/web/restricted/form/formelement=512663");
HttpResponse response = client.execute(get, context);

Log.w("Response ","Status line : "+ response.toString());
15
Lars

Comme Michael Levy l'a mentionné, la raison pour laquelle j'ai eu cette exception est que j'avais laissé mon émulateur Android ouvert pendant quelques jours et que l'horloge s'était très bien désynchronisée. Une fois que j'ai redémarré l'émulateur, l'exception est partie.

27
Adam Johns

Très probablement, le serveur a renvoyé la chaîne de certificats avec des autorités en lesquelles vous n'avez pas confiance. (signifie: les certificats d'autorité ne sont pas reconnus par votre appareil comme fiables) Solution: examinez attentivement les certificats provenant du site Web HTTPS et ajoutez les autorités respectives à votre magasin de clés de confiance - mais cette partie semble être délicate.

(voici quelques explications: http://groups.google.com/group/Android-security-discuss/browse_thread/thread/0bf726de4f5275a3/391b900631d7f358 )

2
Konstantin Pribluda

En passant, nous pourrions facilement reproduire cette erreur - il suffit de changer la date du téléphone plusieurs années plus tard.

REMARQUE: l’erreur peut être une petite différence d’un téléphone à l’autre. Certains pourraient montrer que le certificat a expiré.

0
civic.LiLister