Heim >Java >javaLernprogramm >Wie kann ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' auf Android beheben?

Wie kann ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' auf Android beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-27 15:06:11914Durchsuche

How Can I Resolve

Informationen zu HTTPS-Verbindungsproblemen unter Android

Beim Versuch, eine HTTPS-Verbindung unter Android herzustellen, kann es zu einer „SSL-Ausnahme: Nicht vertrauenswürdig“ kommen Fehler „Serverzertifikat“. Dieser Fehler tritt normalerweise auf, wenn selbstsignierte Zertifikate oder nicht vertrauenswürdige Zertifikate verwendet werden.

Umgehen der Zertifikatsüberprüfung

Eine Methode zur Behebung dieses Problems besteht darin, die Zertifikatsüberprüfung zu deaktivieren. Dieser Ansatz gefährdet jedoch die Sicherheit, da Verbindungen zu nicht vertrauenswürdigen Servern zugelassen werden. Der folgende Codeausschnitt aus dem Java Developers Almanac zeigt, wie man allen Hosts vertraut und die Zertifikatsprüfung umgeht:

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

Bedingte Behandlung basierend auf dem Protokoll

Alternativ können Sie dies tun Behandeln Sie die Verbindung bedingt basierend auf dem Protokoll, wie im folgenden Code gezeigt Snippet:

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

Wenn Sie diesen Ansätzen folgen, können Sie HTTPS-Verbindungen herstellen und die Zertifikatsüberprüfung umgehen. Es ist jedoch wichtig zu beachten, dass dies die Sicherheit gefährdet und mit Vorsicht verwendet werden sollte.

Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „SSL-Ausnahme: Nicht vertrauenswürdiges Serverzertifikat' auf Android beheben?. 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