Heim > Java > javaLernprogramm > Hauptteil

Wie gehe ich mit ungültigen SSL-Zertifikaten in Apache HttpClient ohne KeyManager und TrustManager um?

DDD
Freigeben: 2024-11-04 19:58:02
Original
160 Leute haben es durchsucht

How to Handle Invalid SSL Certificates in Apache HttpClient Without KeyManager and TrustManager?

Umgang mit ungültigen SSL-Zertifikaten mit Apache HttpClient

Frage:

Bei Verwendung von Apache HttpClient Beim Aufbau einer HTTPS-Verbindung treten Fehler im Zusammenhang mit ungültigen SSL-Zertifikaten auf. Wie kann ich diese Fehler beheben und gleichzeitig die Verwendung von KeyManager und TrustManager vermeiden?

Antwort:

Der Umgang mit ungültigen SSL-Zertifikaten in Apache HttpClient erfordert einen der folgenden Ansätze:

  • SSLContext mit einem TrustManager konfigurieren, der jedes Zertifikat akzeptiert
  • SSLContext mit einem geeigneten Trust Store konfigurieren, der das erforderliche Zertifikat enthält
  • Das Zertifikat zum Standard-Java-Truststore hinzufügen

Implementieren eines TrustManagers für jedes Zertifikat:

Der folgende Code zeigt, wie ein SSLContext mit einem TrustManager erstellt wird, der jedes Zertifikat akzeptiert:

<code class="java">import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLTest {
    
    public static void main(String [] args) throws Exception {
        // configure the SSLContext with a TrustManager
        SSLContext ctx = SSLContext.getInstance("TLS");
        ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
        SSLContext.setDefault(ctx);

        URL url = new URL("https://mms.nw.ru");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                return true;
            }
        });
        System.out.println(conn.getResponseCode());
        conn.disconnect();
    }
    
    private static class DefaultTrustManager implements X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}

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

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    }
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit ungültigen SSL-Zertifikaten in Apache HttpClient ohne KeyManager und TrustManager um?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage