javax.net.ssl.SSLHandshakeException: java.Sicherheit.cert.CertificateException: Keine X509TrustManager Umsetzung zur Verfügung

Habe ich code in meiner Anwendung, die versuchen, eine Verbindung zu einem externen host über HTTPS mit einem bestimmten Zertifikat.

Mein code sieht wie folgt aus:

    //Load Two Keystores
    KeyStore keystore = KeyStore.getInstance("pkcs12", "SunJSSE");
    InputStream keystoreInput = new FileInputStream(cerPath);
    keystore.load(keystoreInput, passwd.toCharArray());
    System.out.println("Keystore has " + keystore.size() + " keys");

    //load the truststore, leave it null to rely on cacerts distributed with the JVM
    KeyStore truststore = KeyStore.getInstance("pkcs12", "SunJSSE");
    InputStream truststoreInput = new FileInputStream(cerPath);
    truststore.load(truststoreInput, passwd.toCharArray());
    System.out.println("Truststore has " + truststore.size() + " keys");

    //ssl context
    SSLContext sslcontext = SSLContext.getInstance("TLS");
    sslcontext.init(null, null, null);
    SSLSocketFactory sf = new SSLSocketFactory(keystore, passwd);
    Scheme https = new Scheme("https", 443, sf);

    SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(https);
    ...
    client = new DefaultHttpClient(new PoolingClientConnectionManager(schemeRegistry));
    ...
    HttpResponse httpResponse = client.execute( targetHost, httpMethod);

Die variable cerPath enthält den Pfad zum Zertifikat (xxxx.pfx) verwendet, um die Verbindung herzustellen.

In eine eigenständige Anwendung, funktioniert dies perfekt, aber in meinen spring-boot-Anwendung, die gleiche code wirft diese exception:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No X509TrustManager implementation available

Getestet hab ich diesen code in einen normalen Spring-Anwendung, und es funktioniert auch.

Den normalen SSL-Eigenschaften () nicht funktioniert.

  • Nicht sicher, warum Sie das laden der keystore-und truststore, da Sie sichtlich nicht mit Ihnen überhaupt in Ihrer sslcontext.init(...). (Vielleicht nur in der Apache-HTTP-Client SSLSocketFactory, die nicht scheinen, nutzen Sie die SSLContext entweder.)
  • Ich denke, ja. Aber die JVM lädt die keystore des wiremock, ich weiß nicht, warum.
InformationsquelleAutor jfcorugedo | 2014-03-17
Schreibe einen Kommentar