JDK 10模块和sun.security.provider.certpath.SunCertPathBuilderException

时间:2018-06-11 07:37:50

标签: java docker java-module java-10

我用我在openjdk:10-slim码头图像上运行我的应用程序,一切正常。

然后我使用以下dockerfile迁移到使用Jlink构建的自定义JDK:

FROM openjdk:10-jdk-slim AS jdkBuilder

RUN $JAVA_HOME/bin/jlink \
--module-path /opt/jdk/jmods \
--verbose \
--add-modules java.base,java.logging,java.xml,java.xml.bind,java.sql,jdk.unsupported,java.naming,java.desktop,java.management,java.security.jgss,java.security.sasl,jdk.crypto.cryptoki,jdk.crypto.ec,java.instrument,jdk.management.agent \
--output /opt/jdk-minimal \
--compress 2 \
--no-header-files


FROM debian:9-slim
COPY --from=jdkBuilder /opt/jdk-minimal /opt/jdk-minimal

ENV JAVA_HOME=/opt/jdk-minimal
COPY target/*.jar /opt/

CMD $JAVA_HOME/bin/java $JAVA_OPTS -jar /opt/*.jar

当我使用AWS S3 SDK时,大多数工作都很合理,在这种情况下我得到以下异常:

com.amazonaws.SdkClientException: Unable to execute HTTP request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我猜测这些证书(或访问它们的方式)是由一个我不包括的遗失包提供的。

我做了一些挖掘,无法找到任何相关信息。我尝试添加任何可能与安全性或SSL相关的模块,但我没有运气。

是否有人遇到此问题并知道需要添加哪个模块? 作为一种解决方法,我又回到openjdk:10-slim,但我想使用jlink,因为它会缩小我的图像

1 个答案:

答案 0 :(得分:3)

异常表明您的环境缺少某些根证书。

尝试将openjdk:10-slimSymfony\Component\Ldap\Ldap: arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter'] Symfony\Component\Ldap\Adapter\ExtLdap\Adapter: arguments: - host: '%env(ACLDAP_URL)%' port: 636 encryption: ssl options: protocol_version: 3 referrals: false 复制到您正在使用的JDK。