2017-09-03 6 views
0

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 ich docker-machine env default laufen, ich sehe es auf C:\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" ] 

Antwort

0

Was schließlich der Trick tat die Lösung war, dass ich wahrscheinlich sollte am Anfang versucht haben, wie es war, was das Problem auf meinem dev Fest Maschine.

Mit this tutorial (und das Herunterladen der Datei InstallCert.java von here) Ich habe die erzeugte jssecacerts Datei im Docker Bild nur kopiert mit diesem Befehl in der Dockerfile:

COPY ./res/jssecacerts /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ 
Verwandte Themen