Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.5K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda