JDK 10 модулей и sun.security.provider.certpath.SunCertPathBuilderException - PullRequest
0 голосов
/ 11 июня 2018

Я использую для запуска приложения на образе докера openjdk:10-slim, и все работает нормально.

Затем я перешел на пользовательский JDK, созданный с помощью Jlink, используя следующий файл docker:

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 голосов
/ 11 июня 2018

Исключение предполагает, что в вашей среде отсутствуют некоторые корневые сертификаты.

Попробуйте скопировать cacerts из openjdk:10-slim в используемый вами JDK.

...