Maison > Java > javaDidacticiel > Comment contourner la vérification du certificat du serveur HTTPS sous Android ?

Comment contourner la vérification du certificat du serveur HTTPS sous Android ?

DDD
Libérer: 2024-12-09 19:32:11
original
1075 Les gens l'ont consulté

How to Bypass HTTPS Server Certificate Verification in Android?

Connexion HTTPS Android : ignorer le certificat de serveur pour les requêtes réseau

Lors de l'établissement de connexions HTTPS sous Android, il est crucial de prendre en compte la sécurité du certificat de serveur. Cependant, dans certaines situations, il peut être nécessaire d'établir une connexion sans vérifier le certificat du serveur. Cet article explique comment contourner la vérification des certificats de serveur pour les connexions HTTP dans Android.

Solution : faire confiance à tous les serveurs

Pour ignorer les certificats de serveur et faire confiance à toutes les connexions, vous pouvez implémenter un HostnameVerifier personnalisé et installez un gestionnaire de confiance qui valide tous les certificats. Voici le code :

HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
  public boolean verify(String hostname, SSLSession session) {
    return true;
  }
};

private static void trustAllHosts() {
  TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
      public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return new java.security.cert.X509Certificate[] {};
      }

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

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

  SSLContext sc = SSLContext.getInstance("TLS");
  sc.init(null, trustAllCerts, new java.security.SecureRandom());
  HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
Copier après la connexion

Établissement de la connexion

Une fois la méthode trust all hosts implémentée, vous pouvez établir une connexion HTTP tout en ignorant la vérification du certificat à l'aide du code suivant :

HttpURLConnection http = null;
if (url.getProtocol().toLowerCase().equals("https")) {
  trustAllHosts();
  HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
  https.setHostnameVerifier(DO_NOT_VERIFY);
  http = https;
} else {
  http = (HttpURLConnection) url.openConnection();
}
Copier après la connexion

Cela vous permettra d'établir des connexions HTTPS sans compter sur la validation du certificat du serveur, ce qui peut être nécessaire dans des scénarios spécifiques. Il est crucial de noter que cette approche ne doit être utilisée que dans des environnements de développement ou contrôlés où la sécurité n'est pas une préoccupation majeure.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal