A simple fix for using ca-certificates
to update Java cacerts
store for container.
Due to the update-ca-certificates
will output the Java cacerts
store to /etc/ssl/certs/java/cacerts
which the pre-built image not aware of the changes. So by removing the ${JAVA_HOME}/lib/security/cacerts
and create a symbolic link from /etc/ssl/certs/java/cacerts
to ${JAVA_HOME}/lib/security/cacerts
will resolve the issue.
FROM eclipse-temurin:17-jre-alpine
RUN apk add -Uu --no-cache \
ca-certificates \
java-cacerts \
; rm ${JAVA_HOME}/lib/security/cacerts \
; ln -s /etc/ssl/certs/java/cacerts ${JAVA_HOME}/lib/security/cacerts \
; update-ca-certificates
FROM eclipse-temurin:17-jre-focal
RUN apt-get update \
&& apt install -y --no-install-recommends \
ca-certificates \
p11-kit \
; { \
echo '#!/usr/bin/env bash'; \
echo 'set -Eeuo pipefail'; \
echo 'trust extract --overwrite --format=java-cacerts --filter=ca-anchors --purpose=server-auth "$JAVA_HOME/lib/security/cacerts"'; \
} > /etc/ca-certificates/update.d/java-cacerts \
; chmod +x /etc/ca-certificates/update.d/java-cacerts \
; update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*
For using with generic container, you only need to install ca-certificates
, java-cacerts
(alpine) or ca-certificates-java
(debian) and your jdk/jre of choice.
FROM alpine:latest
RUN apk add -Uu --no-cache \
ca-certificates \
java-cacerts \
openjdk11-jre-headless
FROM ubuntu:focal
RUN apt-get update \
&& apt install -y --no-install-recommends \
ca-certificates \
ca-certificates-java \
openjdk-11-jre-headless \
&& rm -rf /var/lib/apt/lists/*
Very helpful. Thanks for sharing!