Heim >Java >javaLernprogramm >Wie kann ich mit nicht verifizierten HTTPS-Verbindungen in Android umgehen?

Wie kann ich mit nicht verifizierten HTTPS-Verbindungen in Android umgehen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 16:46:16214Durchsuche

How Can I Handle Unverified HTTPS Connections in Android?

Unverifizierte HTTPS-Verbindung in Android

Bei der Ausführung von HTTP(S)-Anfragen tritt der Fehler „SSL-Ausnahme: Kein vertrauenswürdiges Serverzertifikat“ auf Bei der Verwendung von HTTPS müssen Sie möglicherweise die Überprüfung des Serverzertifikats durchführen explizit.

Lösung:

Um die Zertifikatsüberprüfung zu umgehen und allen Servern zu vertrauen, können Sie den folgenden Code implementieren:

// Ignore hostname verification
HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};

// Trust all certificates
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}

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

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[] {};
        }
    }
};

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

// Open the connection, setting hostname verification to false and using the custom trust manager
HttpURLConnection http = null;
if (url.getProtocol().toLowerCase().equals("https")) {
    HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
    https.setHostnameVerifier(DO_NOT_VERIFY);
    http = https;
} else {
    http = (HttpURLConnection) url.openConnection();
}

Mit diesem Code , wird die SSL-Zertifikatsvalidierung sowohl für normale HTTP- als auch für HTTPS-Verbindungen übersprungen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit nicht verifizierten HTTPS-Verbindungen in Android umgehen?. 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