Ich habe eine Spring Boot Java-Anwendung, die ich in einem Docker-Container ausführen möchte. Die Anwendung steht in Verbindung mit einem anderen Dienst auf internes Netzwerk über HTTPS, aber wenn ich die Docker Behälter laufen lasse, erhalte ich die folgende Ausnahme (Ursache von der HTTPS-Verbindung):SunCertPathBuilderException beim Ausführen einer Java-Anwendung in Docker Toolbox
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Ich hatte die gleiche Ausnahme auf meiner dev Maschine naja, das habe ich mit this tutorial behoben.
Was ich versucht
- Viele Hinweise darauf hingewiesen, dass
DOCKER_CERT_PATH
Variable richtig eingestellt werden muss, aber wenn ichdocker-machine env default
laufen, ich sehe es aufC:\Users\username\.docker\machines\machine\default
hingewiesen. - Ich habe versucht, das Zertifikat zu bekommen und es in diesen Ordner setzen mit this advice
- Ich versuchte
-Dtrust_all_cert=true
Java-Option Hinzufügen Zertifikatsprüfung - Ich habe versucht zu wechseln
org.spotify.dockerfile-maven-plugin
-org.spotify.docker-maven-plugin
mit this settings - Ich folgte this tutorial zu deaktivieren und hat es geschafft, das Zertifikat zu
/etc/ssl/certs/java/cacerts
und auch zu/usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts
im Docker-Image hinzuzufügen.
Keine dieser Lösungen funktionierte, leider.
Meine Frage
Was soll ich tun, um diese Ausnahme loszuwerden?
Mein Dockerfile (nach der Anwendung von bisherigen Lösungen)
FROM openjdk:8-jdk-alpine
# to enable file writes
VOLUME /tmp
ADD target/trip-force-0.1.0.jar app.jar
# java cacerts
COPY ./res/timur.domain.local.cer /timur.domain.local.cer
ENV CACERTS /etc/ssl/certs/java/cacerts
RUN keytool -noprompt -import -alias timur -keystore ${CACERTS} -file /timur.domain.local.cer
ENV JAVA_OPTS="-Dtrust_all_cert=true"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]