Heim > Java > javaLernprogramm > Wie behebe ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' in Android-HTTPS-POST-Anfragen?

Wie behebe ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' in Android-HTTPS-POST-Anfragen?

Patricia Arquette
Freigeben: 2024-12-14 01:50:09
Original
596 Leute haben es durchsucht

How to Resolve

Https-Verbindung Android

Beim Versuch, HTTPS-POST-Anfragen in Android durchzuführen, tritt der Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat“ auf. Obwohl HTTPS-Aufrufe ordnungsgemäß unter HTTP funktionieren, schlagen sie fehl.

Lösung:

Um die Überprüfung des Serverzertifikats zu umgehen und HTTPS-Verbindungen herzustellen, können ein benutzerdefinierter Trust Manager und Hostname Verifier implementiert werden wie folgt:

public static void trustAllHosts() {
    // Create a trust manager that does not validate certificate chains
    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 {
        }
    }};

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

// always verify the host - dont check for certificate
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};
Nach dem Login kopieren

Um diese Einstellungen zu verwenden, ändern Sie Ihren HTTPS-Verbindungs-Setup-Code wie folgt:

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();
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' in Android-HTTPS-POST-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage