Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
kann mir jemand erklären woher folgender Fehler kommen könnte?
Wir haben das System mehrfach laufen auf unterschiedliche API. Bei allen klappt es, nur bei einem Kunden kommt der Fehler unten beim Aufruf seiner API.
Das SSL ist aktuell auf unserer Seite, beim Kunden auch. Wir hatten das schon mal bei einem Hoster, da war es irgendwas mit einem Root-Zertifikat. Hier heisst es aber alles sei iO. Müssen wir das Ziel-Zertifikat irgendwie unserem Server bekannt machen oder so?
Java:
org.springframework.web.client.ResourceAccessException: I/O error on GET
request for "https://xxxxxx-shop.de/api/orders": PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target; nested
exception is javax.net.ssl.SSLHandshakeException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Das Zertifikat kann nicht validiert werden, das heißt dass Root Zertifikat, mit dem das Zertifkat von xxxxxx-shop.de unterschrieben ist, ist im Keystore nicht bekannt.
Eine der Ursachen kann sein:
* Es handelt sich um ein Self-Signed Zertifikat
* Das Root Zertifikat ist im JDK nicht enthalten
Es hängt vom eingesetzten JDK ab, welche Root-Zertifikate enthalten sind - in der Regel werden es bei neueren JDK Versionen eher mehr als weniger. Es kann aber dennoch sein, dass aus verschiedenen Gründen welche fehlen.
Das heißt, die Lösung ist:
a) Prüfen, ob ein JDK Update sinnvoll ist und das Problem löst
b) In einem Keystore, der von der Anwendung verwendet wird (Entweder der Default-Keystore von Java oder ein eigener, sofern verwendet) das passende Root-Zeritifkat zu ergänzen.
b) ist vermutlich in er Regel die weniger aufwendige Lösung
Vielen Dank für die ausführliche Antwort. Da arbeite ich mich mal durch.
es ist so, dass für jeden Kunden eine kleine VM läuft wo die Software drauf läuft. Jede Instanz hat also ein eigenes jdk auf der vm. Vermutlich ist es einfacher die jdk zu updated sonst müsste ich auf jedem Server das Root hinzufügen, oder?
Die Frage ist halt, ob das Zertifikat bei einem neueren JDK dabei ist und ob eure Software mit einem neueren JDK Problemlos läuft- Grundsätzlich würde ich erwarten, dass ihr einen Prozess habt die VMs zu bestücken, so dass beim Aufbau der VM man das entsprechend steuern kann, dass das Zertifikat hinzugefügt wird.
Könnten es auf alle verteilen. Aber mich Macht es stutzig, dass es nur bei dem Hoster ist. Kann irgendwo das Root Zertifikat einsehen welches die Zielseite nutzt? Vielleicht ist das ja schlicht alt?
Läuft 2038 ab. Selbstsigniert ist es schon mal nicht.
Auf dem Server läuft
+openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)
soweit so gut nun muss ich mal weiter forschen. danke bis hier hin schon mal
Läuft 2038 ab. Selbstsigniert ist es schon mal nicht.
Auf dem Server läuft
+openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)
soweit so gut nun muss ich mal weiter forschen. danke bis hier hin schon mal
Upgrade auf openjdk17 wärer vermutlich die Lösung oder? Unsere Software dürfte da auch drauf laufen