Désactiver la vérification du certificat SSL dans la rénovation de la bibliothèque
Je suis à l'aide de rénovation en android de se connecter à un serveur.
public class ApiClient {
public static final String BASE_URL = "https://example.com/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
C'est mon dev. serveur et je veux désactiver la vérification du certificat. Comment puis-je mettre en œuvre dans ce code?
ERREUR: javax.net.le protocole ssl.SSLHandshakeException: java.de sécurité.cert.CertPathValidatorException: ancre de Confiance pour la certification chemin d'accès introuvable.
- si vous ne disposez pas d'un certificat ssl sur votre serveur de dev, pourquoi se connecter à l'aide de https?
- C'est un certificat auto-signé. Et l'URL aoti-redirige vers
https
. - Pourquoi ne pas l'ajouter à votre confiance certificats? Au moins jusqu'à ce que vous faites le travail de développement.
- Comment puis-je le faire?
- La meilleure façon que je peux penser est d'envoyer un e-mail à vous-même avec le certificat auto-signé ci-joint. Une fois que vous obtenez ce que l'e-mail, ouvrez le à partir de votre appareil Android et de le télécharger. Ensuite, sélectionnez le certificat téléchargé pour l'installer. Il affichera une invite de commandes, vous pouvez simplement suivre. Si il a été installé avec succès, vous pouvez voir que le certificat sur votre appareil "Settings-> certificats de Confiance ->User" section.
- avez-vous essayé avec succès encore? Le cert dans mon application peut être ajoutée à la Confiance d'Identification - toutefois, les Utilisateurs de mon application n'en est toujours qu'une exception si pas d'utiliser des trustmanager comme dans ma réponse
- Salut BNK, je l'ai fait pour installer le certificat pour Charles qui est utilisé pour HTTP débogage. C'est pourquoi je recommande cette approche.
- ensuite, votre wifi devez définir IP de votre PC en tant que proxy?
- Salut BNK, Oui. C'est la façon dont je l'ai fait. Donc, cela affecterait-il la construction de la confiance?
Vous devez vous connecter pour publier un commentaire.
Utiliser cette classe pour obtenir dangereux de Rénovation de l'instance. J'ai inclus les importations pour éviter toute confusion.
Et puis il suffit d'utiliser rénovation sans contrôle de ssl comme ce
Je déconseille vivement de faire cette
Réponse à court - sous-classe HostNameVerifier, over-ride vérifier() retourne toujours true.
Ce qui a de meilleures options
Longue réponse - vérifier mon (plus très jeune) blog ici: Faire Android et SSL Travailler Ensemble
Peut-être la meilleure option pour votre scénario
Tomber le https en http pour le serveur de test, alors la logique n'a pas à modifier.
HTH
De l'OMI, vous pouvez lire Google la documentation de Sécurité avec HTTPS et SSL.
Sur un exemple de code pour utiliser la Rénovation de votre certificat auto-signé, veuillez essayer ce qui suit, j'espère que ça aide!
La syntaxe a changé un peu depuis Hitesh Sahu la réponse a été posté. Maintenant, vous pouvez utiliser les lambdas pour certaines des méthodes, de supprimer certaines jeter les clauses de la chaîne et du générateur d'invocations de méthode.
Mise en œuvre de cette solution de contournement dans le code, même à des fins de test est une mauvaise pratique.
Vous pouvez:
Quelques liens qui peuvent vous être utiles:
https://jamielinux.com/docs/openssl-certificate-authority/create-the-root-pair.html
http://wiki.cacert.org/FAQ/ImportRootCert