javax.net.le protocole ssl.SSLHandshakeException: java.de sécurité.cert.CertPathValidatorException: ancre de Confiance pour la certification chemin d'accès introuvable
Je suis à l'aide de Rénovation pour accéder à mon API REST. Cependant, quand j'ai mis mon API derrière ssl et l'accès par http://myhost/myapi
puis, j'obtiens cette erreur:
Dois-je faire quelque chose en plus, maintenant que mon API est derrière SSL?
Voici comment je m'y connecter:
private final String API = "https://myhost/myapi";
private final RestAdapter REST_ADAPTER = new RestAdapter.Builder()
.setServer(API)
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
01-10 09:49:55.621 2076-2100/com.myapp.mobile D/Retrofit﹕ javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:401)
at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:209)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:90)
at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:48)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:287)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:222)
at $Proxy12.signin(Native Method)
at com.myapp.loginactivity$3.doInBackground(LoginActivity.java:143)
at com.myapp.loginactivity$3.doInBackground(LoginActivity.java:136)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:282)
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:202)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:595)
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:398)
at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:209)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:90)
at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:48)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:287)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:222)
at $Proxy12.signin(Native Method)
at com.myapp.LoginActivity$3.doInBackground(LoginActivity.java:143)
at com.myapp.LoginActivity$3.doInBackground(LoginActivity.java:136)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
avez-vous résolu ce problème ?
Si vous ne l'avez pas déjà résolu, s'il vous plaît voir: stackoverflow.com/a/31436459/4261176
Si vous ne l'avez pas déjà résolu, s'il vous plaît voir: stackoverflow.com/a/31436459/4261176
OriginalL'auteur birdy | 2014-01-10
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle cela se produire est la JVM/Dalvik n'ai pas confiance dans les certificats d'autorité de certification dans le système ou dans le certificat d'utilisateur magasins.
Pour corriger cela avec de Rénovation, Si vous avez l'habitude okhttp, avec un autre client, il est très semblable.
Vous avez à faire:
Un). Créer un cert magasin contient la Clé publique de l'AC. Pour ce faire, vous devez lancer script suivant pour *nix.
Vous avez besoin d'openssl installer dans votre machine, et de la télécharger à partir de https://www.bouncycastle.org/ le pot bcprov-jdk16-1.46.jar. Télécharger cette version n'
d'autres, la version 1.5 x n'est pas compatible avec android 4.0.4.
B). Copiez le fichier truststore mytruststore.bks dans res/raw de votre projet
C). Réglage SSLContext de la connexion:
retrofit
, vous devez joindre cetteOkHttpClient
comme suggéré ici: github.com/square/retrofit/issues/265. J'ai aussi trouvé ceci fonctionne uniquement avec:bcprov-jdk16-1.46.jar
sinon vous obtenez lewrong version of keystore error
Ma tête pleine de cheveux grâce à vous.
OriginalL'auteur Fernando.
Il y a 4 façons que je connais:
Je suppose que vous ne voulez pas payer pour cela, alors je pense que la solution la plus élégante est le premier, ce qui peut être accompli de cette façon:
http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html
Comment avez-vous "ajouter votre certificat pour le système de confiance des certificats dans Android"?
Il y a plusieurs tutoriels sur internet à ce sujet. Voici pour vous: guyrutenberg.com/2013/03/16/...
OriginalL'auteur kupsef
Salut même problème que j'ai résolu, vous pouvez essayer ce
java.de sécurité.cert.CertPathValidatorException: ancre de Confiance pour le chemin d'accès de certification n'a pas trouvé.RÉSEAU
rappelez-vous que cette désactiver la vérification de certificat. l'éviter dans les environnements de production!
Ce n'est pas de travailler avec ci-dessous 5.0 de l'OS , TLS n'est pas activer par défaut en dessous de 5.0 appareils
Ne pas le faire, sinon, vous vous exposez votre demande pour les attaques de type MitM. Vous ne devriez jamais faire confiance certificats que vous ne connaissez pas.
OriginalL'auteur sushant gosavi
Le SSL n'est pas correctement configuré. Ceux trustAnchor erreurs signifie généralement que la banque de confiance ne peut pas être trouvé. Vérifiez votre configuration et assurez-vous que vous êtes réellement pointant à la banque de confiance et qu'il est en place.
Assurez-vous d'avoir un
-Djavax.net.ssl.trustStore
système de jeu de propriétés et vérifiez que le chemin mène réellement à la banque de confiance.Vous pouvez également activer SSL débogage par la définition de cette propriété système
-Djavax.net.debug=all
. À l'intérieur de la sortie de débogage, vous remarquerez qu'il déclare qu'il ne peut pas trouver le magasin de confiance.La moyenne des pairs certificat n'a pas été trouvé dans la ou approuvés par la banque de confiance, qui est trouvé.
OriginalL'auteur Kevin Bowersox
Cela peut se produire pour plusieurs raisons, notamment:
veuillez consulter ce lien pour solution: https://developer.android.com/training/articles/security-ssl.html#CommonProblems
Oui, j'ai utilisé de rénovation + okhttp alors
OriginalL'auteur Defuera
- Je utiliser cette classe et n'ont aucun problème.
}
OriginalL'auteur Ali Bagheri