Cómo manejar certificados en Dockerfile

Estoy escribiendo una imagen de Docker basada en maven: 3.6.0-jdk-11-slim para integrarla con nuestra canalización de Jenkins. Estoy trabajando en un entorno corporativo que está detrás de un firewall bastante estricto, y necesito agregar certificados para descargar las dependencias necesarias de nuestro servidor Nexus.

Sin embargo, debido a que Docker solo permite rutas relativas al copiar archivos en la imagen, necesitaría proporcionar la ca.crt en el mismo directorio que el Dockerfile y, por lo tanto, compromete todo a SCM, lo que no me entusiasma.

¿Estoy siendo demasiado cauteloso al no querer comprometer nuestro ca-cert? ¿O hay una solución alternativa que me permita usar el certificado que ya existe en el servidor de compilación?

Dockerfile como referencia:

## Build Stage#FROM maven:3.6.0-jdk-11-slimCOPY ca.crt /usr/local/share/ca-certificatesRUN update-ca-certificatesCOPY pom.xml /tmp/pom.xmlCOPY settings.xml /usr/share/maven/ref/settings.xmlRUN mvn -f /tmp/pom.xml -X -s /usr/share/maven/ref/settings.xml clean package

DESCARGO No estoy seguro de si este es el foro correcto para hacer esta pregunta, así que felizmente la moveré si no es así.

Si el ca.crt es el certificado de clave pública es por definición público y no contiene ninguna información que permita suplantar al servidor que tiene el certificado de clave privada correspondiente. Por lo tanto, es seguro agregar el archivo al repositorio, pero... hay una solución mejor:

Obtenga dinámicamente el certificado de clave pública del servidor.Con el siguiente comando puede obtener la clave pública del "certificado autofirmado" de la CA que firmó el certificado:

echo quit | openssl s_client -showcerts -servername example.com -connect example.com:443 2>/dev/null | awk '/BEGIN/,/END/{ if(/BEGIN/){c=""};c=c $0 "\n"}END{print c}' >ca.crt || true

File ca.crt contiene el certificado de clave pública.

De esta manera, cada vez que compila la imagen de Docker, el certificado de la CA se "actualiza".