Maison > Java > javaDidacticiel > Comment gérer les certificats SSL invalides dans Apache HttpClient sans KeyManager et TrustManager ?

Comment gérer les certificats SSL invalides dans Apache HttpClient sans KeyManager et TrustManager ?

DDD
Libérer: 2024-11-04 19:58:02
original
269 Les gens l'ont consulté

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

Gestion des certificats SSL non valides avec Apache HttpClient

Question :

Lors de l'utilisation d'Apache HttpClient pour établissez une connexion HTTPS, des erreurs liées à des certificats SSL invalides sont rencontrées. Comment puis-je surmonter ces erreurs tout en évitant l'utilisation de KeyManager et TrustManager ?

Réponse :

La gestion des certificats SSL non valides dans Apache HttpClient nécessite l'une des approches suivantes :

  • Configuration de SSLContext avec un TrustManager qui accepte n'importe quel certificat
  • Configuration de SSLContext avec un magasin de confiance approprié contenant le certificat requis
  • Ajout du certificat au magasin de confiance Java par défaut

Implémentation d'un TrustManager pour n'importe quel certificat :

Le code suivant montre comment créer un SSLContext avec un TrustManager qui accepte n'importe quel certificat :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal