Maison >Java >javaDidacticiel >Comment contourner les certificats de serveur non approuvés lors de l'établissement de connexions HTTPS sur Android ?
Établissement d'une connexion HTTPS sur Android
Lorsqu'ils tentent d'établir une connexion HTTPS sur Android, les développeurs peuvent rencontrer une exception liée à un certificat de serveur non approuvé . Pour résoudre ce problème, on peut envisager d'accepter le certificat du serveur.
Faire confiance à tous les hôtes
Une approche pour contourner la vérification du certificat consiste à faire confiance à tous les hôtes, ce qui désactive efficacement la vérification. Ceci peut être réalisé en implémentant un HostnameVerifier personnalisé et un TrustManager.
// Hostname verifier that always returns true HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; // Trust manager that accepts all certificates TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; } @Override public void checkClientTrusted(X509Certificate[] chain, String authType) {} @Override public void checkServerTrusted(X509Certificate[] chain, String authType) {} } };
Ensuite, initialisez SSLContext et appliquez le gestionnaire de confiance et le vérificateur de nom d'hôte.
SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Exemple d'utilisation
Lors de la création d'une connexion HTTP, vérifiez le protocole et appliquez la configuration susmentionnée si c'est le cas. HTTPS.
HttpURLConnection http = null; String url = "https://example.com"; if (url.toLowerCase().equals("https")) { trustAllHosts(); HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); https.setHostnameVerifier(DO_NOT_VERIFY); http = https; } else { http = (HttpURLConnection) url.openConnection(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!