2017-09-03 21 views
0

Dockerコンテナ内で実行したいSpring Boot Javaアプリケーションがあります。アプリケーションは、HTTPS経由で内部ネットワーク上の他のサービスと通信しますが、私はドッカーコンテナを実行すると、私は次の例外(HTTPS接続による原因)を取得:Docker ToolboxでJavaアプリケーションを実行しているときのSunCertPathBuilderException

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

私のように私のdevのマシン上で同じ例外を持っていましたよく、私はthis tutorialを使って修正しました。私は

  • 多くのアドバイスを試してみました何

    DOCKER_CERT_PATH変数が正しく設定する必要があることを指摘したが、私はdocker-machine env defaultを実行したとき、私はそれがC:\Users\username\.docker\machines\machine\defaultを指摘ご覧ください。

  • 私はthis tutorialに続き、this settings
  • org.spotify.docker-maven-pluginorg.spotify.dockerfile-maven-pluginからの切り替えしようとした私は、証明書のチェック
  • を無効にする-Dtrust_all_cert=true Javaオプションを追加しようとした証明書を取得し、this advice
  • を使用して、このフォルダにそれを入れてみました証明書を/etc/ssl/certs/java/cacertsに追加し、Dockerイメージの/usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacertsにも追加することができました。これらのソリューションの

なし生憎、働いていません。

私の質問

私はこの例外を取り除くために何をすべきか?最終的にはトリックが、それは私のdevの上での問題を修正したものだったと私は考えられるが、最初に試している必要があることを、解決策だったのは何(以前のソリューションを適用した後の)

マイDockerfile

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" ] 

答えて

0

機械。

this tutorial

を使用(およびhereからInstallCert.javaファイルをダウンロードする)私はDockerfileでこのコマンドを使用して、ドッカー画像内部で生成jssecacertsファイルコピー:

COPY ./res/jssecacerts /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ 
関連する問題