JDK 10 个模块和 sun.security.provider.certpath.SunCertPathBuilderException
JDK 10 modules and sun.security.provider.certpath.SunCertPathBuilderException
我在 openjdk:10-slim
docker 图像上使用 运行 我的应用程序,一切正常。
然后我使用以下 docker 文件迁移到使用 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
,因为它会使我的图像变小
异常表明您的环境缺少一些根证书。
尝试将 cacerts
从 openjdk:10-slim
复制到您正在使用的 JDK。
我在 openjdk:10-slim
docker 图像上使用 运行 我的应用程序,一切正常。
然后我使用以下 docker 文件迁移到使用 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
,因为它会使我的图像变小
异常表明您的环境缺少一些根证书。
尝试将 cacerts
从 openjdk:10-slim
复制到您正在使用的 JDK。