Maison >Java >javaDidacticiel >Comment puis-je résoudre les erreurs « Exception SSL : certificat de serveur non approuvé » sur Android ?

Comment puis-je résoudre les erreurs « Exception SSL : certificat de serveur non approuvé » sur Android ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-27 15:06:11914parcourir

How Can I Resolve

Comprendre les problèmes de connexion HTTPS sur Android

Lorsque vous essayez d'établir une connexion HTTPS sur Android, vous pouvez rencontrer une « exception SSL : non fiable erreur de certificat de serveur". Cette erreur se produit généralement lors de l'utilisation de certificats auto-signés ou de certificats non fiables.

Contourner la vérification du certificat

Une méthode pour résoudre ce problème consiste à désactiver la vérification du certificat. Cette approche compromet toutefois la sécurité en autorisant les connexions à des serveurs non fiables. L'extrait de code suivant de The Java Developers Almanac montre comment faire confiance à tous les hôtes et contourner la vérification des certificats :

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return new java.security.cert.X509Certificate[] {};
        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
    }
};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    e.printStackTrace();
}

Gestion conditionnelle basée sur le protocole

Vous pouvez également gérer la connexion de manière conditionnelle en fonction du protocole, comme indiqué dans le code suivant extrait :

if (url.getProtocol().toLowerCase().equals("https")) {
    trustAllHosts();
    HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
    https.setHostnameVerifier(DO_NOT_VERIFY);
    http = https;
} else {
    http = (HttpURLConnection) url.openConnection();
}

En suivant ces approches, vous pouvez établir des connexions HTTPS et contourner la vérification du certificat, mais il est important de noter que cela compromet la sécurité et doit être utilisé avec prudence.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn