web-dev-qa-db-fra.com

Android Emulator "Chain Validation Failed" connectant la machine des développeurs avec un certificat auto-signé

J'ai un Android Studio qui appelle un service d'API basé sur le Web. Lorsque le code de service est en dev, qa, prod, etc. pour tester une nouvelle fonctionnalité/correction de bogue/etc. J'obtiens:

Pas de réponse en raison d'une erreur:

javax.net.ssl.SSLHandshakeException: la validation de la chaîne a échoué

sur com.Android.org.conscrypt.OpenSSLSocketImpl.startHandshake (OpenSSLSocketImpl.Java:361)

J'ai fait exporter le certificat auto-signé de la machine des développeurs de services SANS la clé privée DER encodée. Je suis tombé sur l'émulateur et il "s'est installé" mais cela n'a pas fonctionné.

J'ai pris le même certificat ci-dessus et copié sur la carte SD émulée. Puis installé à partir des paramètres de sécurité dans l'émulateur. Même résultat. La validation de la chaîne a échoué.

Maintenant, mes connaissances en matière de sécurité/certificats sont très basiques. Je pense que l'erreur décrit réellement le problème. Il n'y a pas de chaîne dans un certificat auto-signé ... mais je peux me tromper.

Quoi qu'il en soit, comment puis-je contourner ce problème?

Je souhaite pouvoir exécuter mon Android et frapper la case des développeurs pour tester/déboguer, etc.

J'ai lu un article comme celui-ci uniquement pour avoir l'environnement d'entreprise dans lequel je bloque les sites pour SSL ouvert, etc.

https://Android.stackexchange.com/questions/61540/self-signed-certificate-install-claims-success-but-Android-acts-as-if-cert-isn

J'accède au service via une WebView.

25
GPGVM

Une cause de ce problème peut être une date/heure incorrecte de l'appareil

73
DigaoParceiro

Je devenais

javax.net.ssl.SSLHandshakeException: Chain validation failed

et

Java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date

la solution qui a fonctionné pour moi était de forcer le démarrage à froid de l'émulateur via Virtual Device Manager -> liste déroulante Actions -> démarrage à froid maintenant

14
Caleb_Allen

Le simple redémarrage de l'émulateur a résolu cette erreur. Appuyez longuement sur le bouton Éteindre dans le menu de l'émulateur et sélectionnez Redémarrer.

7
vovahost

Je sais que c'est une vieille question, mais j'ai eu un problème similaire, avec une solution complètement différente.

Assurez-vous que votre SSL n'est pas expiré. Une fois que j'ai résolu ce problème, je n'obtenais plus d'erreurs "javax.net.ssl.SSLHandshakeException: la validation de la chaîne a échoué". J'ai eu d'autres problèmes, mais c'est un fil différent.

Cela ressemble à une solution si évidente, mais c'est quelque chose à examiner et pas nécessairement la première chose à l'esprit des gens.

1
computercarguy

J'ai effacé toutes les données de l'émulateur et l'ai redémarré, j'ai installé l'application et tout fonctionnait. Mais vu une autre solution, je pense maintenant que cela pourrait être une exagération.

0
arenaq