Zertifikat Authentifizierung am Webservice

Hallo allerseits,

ich sende einen Request an einen Webserver, dem ich irgendwelche Strings übergebe. Das funktioniert auch. Jetzt ist das Problem, das auf dem Produktionsserver eine Zertifikatauthentifizierung erfolgen muss. Das Zertifikat habe ich bereits in den Keystore importiert. Ich verstehe die ganze Vorgehensweise ehrlichgesagt nicht :( Hier der Code (Auszug):

Java:
final String _url = Url;
           
            
            
            URL endpoint;
           
            endpoint = new URL(new URL(_url),
                    "",
                    //Handler für die Connection und die Connectioneigenschaften
                    new URLStreamHandler()
                    {
                        @Override
                        protected URLConnection openConnection(URL url) throws IOException
                        {
                            try
                            {
                                URL zielAdresse = new URL(url.toString());
                                URLConnection connection = zielAdresse.openConnection();
                               
                                //Zertifikat einlesen und dem Request hinzufügen
                                KeyStore ks = KeyStore.getInstance("JKS");
                                FileInputStream fis = new FileInputStream("Pfad zur Datei");
                               
                                ks.load(fis, _certPasswort.toCharArray());
                                //In key sehe ich das Zertifikat. Es wird also gefunden
                                Key key = ks.getKey("testzert", "changeit".toCharArray());
                               
                                KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
                               
                                kmf.init(ks, _certPasswort.toCharArray());
                               
                                TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                                tmf.init(ks);
                               
                                X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
                               
                               
                                SSLContext sc = SSLContext.getInstance("TLS");
                                //sc.init(kmf.getKeyManagers(), null, null);
                                sc.init(null, new TrustManager[] {defaultTrustManager}, null);
                               
                                SSLSocketFactory sslSocketFactory = sc.getSocketFactory();
                               
                                ((HttpsURLConnection) connection).setSSLSocketFactory(sslSocketFactory);   
                               connection.connect();
                               
                               
                                return(connection);
Wenn ich das ganze ausführe, kommt bei connection.connect() folgende Fehlermeldung:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Das kann eigentlich nicht sein, denn er findet das Zerttifikat ja, oder verstehe ich die Meldung falsch ???

Könnte mir da bitte jemand helfen ???

Viele Grüße

Steffen
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben