Compartir comentarios
Las respuestas se generan en base a la documentación.

Utilizar certificados CA con Docker

Caution

Se deben seguir las mejores prácticas al utilizar certificados CA de Man-in-the-Middle (MITM) en contenedores de producción. Si se ven comprometidos, los atacantes podrían interceptar datos confidenciales, suplantar un servicio de confianza o realizar ataques de intermediario (man-in-the-middle). Consulta a tu equipo de seguridad antes de continuar.

Si tu empresa utiliza un proxy que inspecciona el tráfico HTTPS, es posible que debas añadir los certificados raíz requeridos a tu máquina host y a tus contenedores o imágenes de Docker. Esto se debe a que Docker y sus contenedores, al descargar imágenes o realizar solicitudes de red, necesitan confiar en los certificados del proxy.

En el host, añadir el certificado raíz garantiza que cualquier comando de Docker (como docker pull) funcione sin problemas. Para los contenedores, deberás añadir el certificado raíz al almacén de confianza del contenedor, ya sea durante el proceso de construcción o en tiempo de ejecución. Esto garantiza que las aplicaciones que se ejecutan dentro de los contenedores puedan comunicarse a través del proxy sin encontrar advertencias de seguridad o fallos de conexión.

Añadir el certificado CA al host

Las siguientes secciones describen cómo instalar certificados CA en tu host macOS o Windows. Para Linux, consulta la documentación de tu distribución.

macOS

  1. Descarga el certificado CA para tu software de proxy MITM.
  2. Abre la aplicación Acceso a Llaveros (Keychain Access).
  3. En Acceso a Llaveros, selecciona Sistema (System) y luego cambia a la pestaña Certificados (Certificates).
  4. Arrastra y suelta el certificado descargado en la lista de certificados. Introduce tu contraseña si se te solicita.
  5. Busca el certificado recién añadido, haz doble clic en él y despliega la sección Confiar (Trust).
  6. Configura Confiar siempre (Always Trust) para el certificado. Introduce tu contraseña si se te solicita.
  7. Inicia Docker Desktop y verifica que docker pull funcione, asumiendo que Docker Desktop está configurado para utilizar el proxy MITM.

Windows

Elige si deseas instalar el certificado utilizando la Consola de administración de Microsoft (MMC) o tu navegador web.

  1. Descarga el certificado CA para tu software de proxy MITM.
  2. Abre la Consola de administración de Microsoft (mmc.exe).
  3. Agrega el Complemento de Certificados (Certificates Snap-In) en la MMC.
    1. Selecciona Archivo (File) → Agregar o quitar complemento (Add/Remove Snap-in), y luego selecciona Certificados (Certificates) → Agregar > (Add >).
    2. Selecciona Cuenta de equipo (Computer Account) y luego Siguiente (Next).
    3. Selecciona Equipo local (Local computer) y luego selecciona Finalizar (Finish).
  4. Importa el certificado CA:
    1. Desde la MMC, despliega Certificados (Equipo local).
    2. Despliega la sección Entidades de certificación raíz de confianza (Trusted Root Certification Authorities).
    3. Haz clic con el botón derecho en Certificados y selecciona Todas las tareas (All Tasks) e Importar… (Import…).
    4. Sigue las instrucciones para importar tu certificado CA.
  5. Selecciona Finalizar y luego Cerrar.
  6. Inicia Docker Desktop y verifica que docker pull se realice correctamente (asumiendo que Docker Desktop ya está configurado para utilizar el servidor proxy MITM).
Note

Dependiendo del SDK y/o runtime/framework en uso, pueden ser necesarios pasos adicionales más allá de agregar el certificado CA al almacén de confianza del sistema operativo.

  1. Descarga el certificado CA para tu software de proxy MITM.
  2. Abre tu navegador web, ve a Configuración y abre Administrar certificados.
  3. Selecciona la pestaña Entidades de certificación raíz de confianza.
  4. Selecciona Importar, luego busca el certificado CA descargado.
  5. Selecciona Abrir, luego elige Colocar todos los certificados en el siguiente almacén.
  6. Asegúrate de que esté seleccionado Entidades de certificación raíz de confianza y selecciona Siguiente.
  7. Selecciona Finalizar y luego Cerrar.
  8. Inicia Docker Desktop y verifica que docker pull se realice correctamente (asumiendo que Docker Desktop ya está configurado para utilizar el servidor proxy MITM).

Añadir certificados CA a imágenes y contenedores Linux

Si necesitas ejecutar cargas de trabajo contenedorizadas que dependen de certificados internos o personalizados, como en entornos con proxies corporativos o servicios seguros, debes asegurarte de que los contenedores confíen en estos certificados. Sin añadir los certificados CA necesarios, las aplicaciones dentro de tus contenedores pueden experimentar fallos en las solicitudes o advertencias de seguridad al intentar conectarse a puntos de conexión HTTPS.

Al añadir certificados CA a las imágenes en el momento de la construcción, garantizas que cualquier contenedor que se inicie a partir de la imagen confiará en los certificados especificados. Esto es de especial importancia para las aplicaciones que requieren un acceso fluido a API internas, bases de datos u otros servicios durante la producción.

En los casos en que no sea factible volver a construir la imagen, puedes añadir certificados a los contenedores directamente. Sin embargo, los certificados añadidos en tiempo de ejecución no persistirán si el contenedor se destruye o se vuelve a crear, por lo que este método suele utilizarse para soluciones temporales o escenarios de prueba.

Añadir certificados a las imágenes

Note

Los siguientes comandos son para una imagen base de Ubuntu. Si tu construcción utiliza una distribución de Linux diferente, utiliza los comandos equivalentes para la gestión de paquetes (apt-get, update-ca-certificates, etc.).

Para añadir un certificado CA a una imagen de contenedor cuando la estás construyendo, la siguiente instrucción en tu Dockerfile. (Wait! Let's say: Para añadir un certificado CA a una imagen de contenedor cuando la estás construyendo, añade las siguientes instrucciones a tu Dockerfile.)

# Instala el paquete ca-certificates
RUN apt-get update && apt-get install -y ca-certificates
# Copia el certificado CA desde el contexto al contenedor de construcción
COPY tu_certificado.crt /usr/local/share/ca-certificates/
# Actualiza los certificados CA en el contenedor
RUN update-ca-certificates

Añadir certificados a los contenedores

Note

Los siguientes comandos son para un contenedor basado en Ubuntu. Si tu contenedor utiliza una distribución de Linux diferente, utiliza los comandos equivalentes para la gestión de paquetes (apt-get, update-ca-certificates, etc.).

Para añadir un certificado CA a un contenedor Linux en ejecución:

  1. Descarga el certificado CA para tu software de proxy MITM.

  2. Si el certificado está en un formato diferente a .crt, conviértelo al formato .crt:

    Comando de ejemplo
    $ openssl x509 -in cacert.der -inform DER -out myca.crt
    
  3. Copia el certificado en el contenedor en ejecución:

    $ docker cp myca.crt <containerid>:/tmp
    
  4. Conéctate al contenedor:

    $ docker exec -it <containerid> sh
    
  5. Asegúrate de que el paquete ca-certificates esté instalado (requerido para actualizar los certificados):

    # apt-get update && apt-get install -y ca-certificates
    
  6. Copia el certificado a la ubicación correcta para los certificados CA:

    # cp /tmp/myca.crt /usr/local/share/ca-certificates/root_cert.crt
    
  7. Actualiza los certificados CA:

    # update-ca-certificates
    
    Ejemplo de salida
    Updating certificates in /etc/ssl/certs...
    rehash: warning: skipping ca-certificates.crt, it does not contain exactly one certificate or CRL
    1 added, 0 removed; done.
  8. Verifica que el contenedor pueda comunicarse a través del proxy MITM:

    # curl https://example.com
    
    Ejemplo de salida
    <!doctype html>
    <html>
    <head>
        <title>Example Domain</title>
    ...