Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.5K
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda