Skip to content

Commit f0781f1

Browse files
committed
file /etc/ssl/certs/ca-certificates.crt containing 4 eMudhra root certificates out of which emSign ECC Root CA - G3 is distrusted
1 parent 428879e commit f0781f1

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

‎java-11/Dockerfile‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,12 @@ FROM gcr.io/distroless/java-base-debian12:debug AS ssl
6565
# the Zulu JDK and the distroless java-base image no longer ship these roots.
6666
# jlink copies cacerts out of java.base.jmod, so the cleanup above (before jlink) does not
6767
# reach /jre. The distroless store uses subject DN aliases and has no keytool.
68+
# The PEM bundle in the final image comes from BASE_IMAGE and also has the eMudhra roots.
69+
FROM ${BASE_IMAGE} AS base-ca
70+
6871
FROM jre AS emudhra-clean
6972
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java
73+
COPY --from=base-ca /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
7074
RUN for entry in \
7175
"/jre/lib/security/cacerts|emsigneccrootcag3 [jdk]" \
7276
"/jre/lib/security/cacerts|comodoaaaca [jdk]" \
@@ -79,6 +83,16 @@ RUN for entry in \
7983
echo "Certificate alias '$alias' not found in $store; skipping deletion."; \
8084
fi; \
8185
done
86+
# Drop every eMudhra root (emSign ECC Root CA - C3/G3, emSign Root CA - C1/G1) from the PEM bundle,
87+
# matched by subject.
88+
RUN mkdir /tmp/ca && cd /tmp/ca \
89+
&& awk '/-----BEGIN CERTIFICATE-----/{n++} n{print > sprintf("c%04d.pem", n)}' /etc/ssl/certs/ca-certificates.crt \
90+
&& for f in c*.pem; do \
91+
if openssl x509 -in "$f" -noout -subject | grep -qi 'eMudhra'; then \
92+
echo "Removing: $(openssl x509 -in "$f" -noout -subject)"; rm "$f"; \
93+
fi; \
94+
done \
95+
&& cat c*.pem > /etc/ssl/certs/ca-certificates.crt
8296

8397
FROM debian:bookworm-slim As builder
8498
RUN apt update && apt install -y libjemalloc-dev
@@ -118,6 +132,7 @@ COPY --from=jre /jre /usr/lib/jvm/zulu-11-slim
118132
# TEMP: eMudhra distrust, see emudhra-clean stage above
119133
COPY --from=emudhra-clean /jre/lib/security/cacerts /usr/lib/jvm/zulu-11-slim/lib/security/cacerts
120134
COPY --from=emudhra-clean /etc/ssl/certs/java/cacerts /etc/ssl/certs/java/cacerts
135+
COPY --from=emudhra-clean /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
121136

122137
RUN ln -s /usr/lib/jvm/zulu-11-slim/bin/java /usr/bin/java
123138
RUN ln -s /usr/lib/jvm/zulu-11-slim/bin/jfr /usr/bin/jfr

‎java-21/Dockerfile‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,12 @@ FROM gcr.io/distroless/java-base-debian12:debug AS ssl
6565
# the Zulu JDK and the distroless java-base image no longer ship these roots.
6666
# jlink copies cacerts out of java.base.jmod, so the cleanup above (before jlink) does not
6767
# reach /jre. The distroless store uses subject DN aliases and has no keytool.
68+
# The PEM bundle in the final image comes from BASE_IMAGE and also has the eMudhra roots.
69+
FROM ${BASE_IMAGE} AS base-ca
70+
6871
FROM jre AS emudhra-clean
6972
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java
73+
COPY --from=base-ca /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
7074
RUN for entry in \
7175
"/jre/lib/security/cacerts|emsigneccrootcag3 [jdk]" \
7276
"/jre/lib/security/cacerts|comodoaaaca [jdk]" \
@@ -79,6 +83,16 @@ RUN for entry in \
7983
echo "Certificate alias '$alias' not found in $store; skipping deletion."; \
8084
fi; \
8185
done
86+
# Drop every eMudhra root (emSign ECC Root CA - C3/G3, emSign Root CA - C1/G1) from the PEM bundle,
87+
# matched by subject.
88+
RUN mkdir /tmp/ca && cd /tmp/ca \
89+
&& awk '/-----BEGIN CERTIFICATE-----/{n++} n{print > sprintf("c%04d.pem", n)}' /etc/ssl/certs/ca-certificates.crt \
90+
&& for f in c*.pem; do \
91+
if openssl x509 -in "$f" -noout -subject | grep -qi 'eMudhra'; then \
92+
echo "Removing: $(openssl x509 -in "$f" -noout -subject)"; rm "$f"; \
93+
fi; \
94+
done \
95+
&& cat c*.pem > /etc/ssl/certs/ca-certificates.crt
8296

8397
FROM debian:bookworm-slim AS builder
8498
RUN apt update && apt install -y libjemalloc-dev
@@ -118,6 +132,7 @@ COPY --from=jre /jre /usr/lib/jvm/zulu-21-slim
118132
# TEMP: eMudhra distrust, see emudhra-clean stage above
119133
COPY --from=emudhra-clean /jre/lib/security/cacerts /usr/lib/jvm/zulu-21-slim/lib/security/cacerts
120134
COPY --from=emudhra-clean /etc/ssl/certs/java/cacerts /etc/ssl/certs/java/cacerts
135+
COPY --from=emudhra-clean /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
121136

122137
RUN ln -s /usr/lib/jvm/zulu-21-slim/bin/java /usr/bin/java
123138
RUN ln -s /usr/lib/jvm/zulu-21-slim/bin/jfr /usr/bin/jfr

0 commit comments

Comments
 (0)