Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.5K
Views
El servicio no reconoce la importación del certificado autofirmado en el cacert JRE de Docker
  • Un servicio de Java se está ejecutando dentro del contenedor de Docker, que accede a la URL HTTPS externa y su certificado de autofirma no está disponible para el almacén de claves cacert del servicio/JRE y, por lo tanto, falla la conexión.
  • Por lo tanto, importó el certificado autofirmado de la URL externa HTTPS al almacén de claves cacert JRE del contenedor Docker. (después de comprobar la variable $JAVA_HOME )
  • Se reinició el contenedor de Docker (usando el comando de docker restart ), con la esperanza de que el servicio también se reinicie y seleccione los cambios de JRE cacert. Pero esto no sucedió, el servicio Java aún no puede acceder a la URL HTTPS externa.

¿Alguna idea de cómo un servicio de Java que se ejecuta dentro del contenedor Docker selecciona los cambios de cacert de JRE con la importación de un nuevo certificado?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Por lo tanto, importó el certificado autofirmado de la URL externa HTTPS al almacén de claves cacert JRE del contenedor Docker.

No: debe importarlo a la imagen de Docker desde la que ejecuta su contenedor.

Importarlo al contenedor solo crearía una capa temporal de datos grabables , que se descartará cuando reinicie su contenedor.

Algo como esta respuesta :

 USER root 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
over 4 years ago · Santiago Trujillo Report

0

Para usar contenedores basados en Java ya configurados como jenkins , sonarqube o nexus (por ejemplo, si ejecuta su propio servidor de compilación), me parece más conveniente montar un cacerts adecuado en estos contenedores con un parámetro para docker run.

Uso el archivo cacerts de openjdk como base:

  1. extrayendo cacerts de la imagen openjdk usando un contenedor temporal:
 docker pull openjdk:latest docker run --rm --entrypoint cat openjdk:latest /etc/ssl/certs/java/cacerts > cacerts
  1. agregar certificado a los cacerts extraídos usando un contenedor temporal iniciado desde la misma carpeta que también contiene ldap.cer :
 docker run --rm -v `pwd`:/tmp/certs openjdk:latest bash -c 'cd /tmp/certs && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias buenting-root -file ldap.cer'
  1. ejecute su(s) contenedor(es) acoplable(s) de destino montando los cacerts extraídos con un parámetro de ejecución, por ejemplo, para sonarqube :
 docker run ... -v /path/to/your/prepared/cacerts:/etc/ssl/certs/java/cacerts:ro ... sonarqube:lts

Si hay una nueva versión de openjdk , puede actualizar el cacerts en el host con los comandos 1 y 2.

Para actualizar la imagen de destino (por ejemplo sonarqube ) no necesita crear su propia imagen usando Dockerfile y docker build .

over 4 years ago · Santiago Trujillo Report

0

Aquí hay una solución que funcionó para la imagen basada en OpenJDK Java 11 .

Una cosa que mencionar antes es que puede usar una imagen JDK o JRE. La segunda opción requerirá ca-certificates-java instalado.

  • Dockerfile para imagen basada en JDK :
 FROM openjdk:11-jdk-slim WORKDIR /opt/workdir/ #.crt file in the same folder as your Dockerfile ARG CERT="certificate.crt" #import cert into java COPY $CERT /opt/workdir/ RUN keytool -importcert -file $CERT -alias $CERT -cacerts -storepass changeit -noprompt ...
  • Dockerfile para imagen basada en JRE :
 FROM openjdk:11-jre-slim WORKDIR /opt/workdir/ #.crt file in the same folder as your Dockerfile ARG CERT="certificate.crt" #installing ca-certificates-java and then import cert into java COPY $CERT /opt/workdir/ RUN mkdir -p /usr/share/man/man1 \ && apt-get update \ && apt-get install -y ca-certificates-java \ && keytool -importcert -file $CERT -alias $CERT -cacerts -storepass changeit -noprompt ...

Además, como puede ver en las instrucciones de Dockerfiles anteriores, ambos requieren que su archivo certificate.crt esté en la misma carpeta.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!