17

I want to enable LDAPS under security in Jenkins but my LDAP server has a self-signed CERT. Has anyone done this or have some pointers on doing this? Do I have to use keytool?

In my Dockerfile I'm trying the following but this won't work:

FROM jenkins

USER root

# Install CA certs
COPY ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
RUN chmod +r /etc/ssl/certs/ca-certificates.crt

# Install the Jenkins plugin  
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

# Expose container port 33838 for Jenkins UDP-based auto-discovery
EXPOSE 33848/udp

ENV JAVA_OPTS -Xmx2048m
occasl
  • 5,012
  • 4
  • 51
  • 76

3 Answers3

35

It turns out I just need to add this in the Dockerfile where ldap.cer is the cert chain for my self-signed cert.

COPY ldap.cer $JAVA_HOME/jre/lib/security
RUN \
    cd $JAVA_HOME/jre/lib/security \
    && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ldapcert -file ldap.cer
occasl
  • 5,012
  • 4
  • 51
  • 76
1

Run keytool to import the CA cert into your java keystore.

See:

telling java to accept self-signed ssl certificate

Community
  • 1
  • 1
Mark O'Connor
  • 74,471
  • 10
  • 132
  • 177
1

On our build server with jenkins, nexus and sonarqube we use a extracted and prepared cacerts file on the host using a start parameter for docker run.

See my answer on Stackoverflow "Importing self-signed cert into Docker's JRE cacert is not recognized by the service"

Volker Seibt
  • 1,399
  • 13
  • 19