Heim >Java >javaLernprogramm >Wie umgehe ich die Überprüfung des HTTPS-Serverzertifikats in Android?

Wie umgehe ich die Überprüfung des HTTPS-Serverzertifikats in Android?

DDD
DDDOriginal
2024-12-09 19:32:111017Durchsuche

How to Bypass HTTPS Server Certificate Verification in Android?

Https-Verbindung Android: Serverzertifikat für Netzwerkanfragen ignorieren

Beim Herstellen von HTTPS-Verbindungen in Android ist es wichtig, die Sicherheit des Serverzertifikats zu berücksichtigen. In bestimmten Situationen kann es jedoch erforderlich sein, eine Verbindung herzustellen, ohne das Serverzertifikat zu überprüfen. In diesem Artikel wird beschrieben, wie Sie die Serverzertifikatsüberprüfung für HTTP-Verbindungen in Android umgehen.

Lösung: Allen Servern vertrauen

Um Serverzertifikate zu ignorieren und allen Verbindungen zu vertrauen, können Sie Folgendes implementieren einen benutzerdefinierten HostnameVerifier und installieren Sie einen Trust-Manager, der alle Zertifikate validiert. Hier ist der 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());
}

Verbindungsaufbau

Sobald die Methode „Alle Hosts vertrauen“ implementiert ist, können Sie mithilfe des folgenden Codes eine HTTP-Verbindung herstellen und dabei die Zertifikatsüberprüfung ignorieren :

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();
}

Dadurch können Sie HTTPS-Verbindungen herstellen, ohne sich auf die Validierung von Serverzertifikaten verlassen zu müssen, was in bestimmten Fällen erforderlich sein kann Szenarien. Es ist wichtig zu beachten, dass dieser Ansatz nur in Entwicklungs- oder kontrollierten Umgebungen verwendet werden sollte, in denen Sicherheit kein vorrangiges Anliegen ist.

Das obige ist der detaillierte Inhalt vonWie umgehe ich die Überprüfung des HTTPS-Serverzertifikats in Android?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn