Cómo generar un certificado SSL autofirmado para un registro de Docker

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La seguridad de su registro de Docker es fundamental para mantener la integridad de sus imágenes de contenedores y garantizar la seguridad de sus aplicaciones basadas en Docker. En este tutorial, lo guiaremos a través del proceso de generación de un certificado SSL autofirmado para su registro de Docker, lo que le permitirá establecer una conexión segura entre sus clientes de Docker y el registro.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/push("Push Image to Repository") docker/SystemManagementGroup -.-> docker/login("Log into Docker Registry") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/pull -.-> lab-411544{{"Cómo generar un certificado SSL autofirmado para un registro de Docker"}} docker/tag -.-> lab-411544{{"Cómo generar un certificado SSL autofirmado para un registro de Docker"}} docker/push -.-> lab-411544{{"Cómo generar un certificado SSL autofirmado para un registro de Docker"}} docker/login -.-> lab-411544{{"Cómo generar un certificado SSL autofirmado para un registro de Docker"}} docker/build -.-> lab-411544{{"Cómo generar un certificado SSL autofirmado para un registro de Docker"}} end

Comprendiendo los certificados SSL autofirmados

Los certificados SSL (Secure Sockets Layer) se utilizan para establecer una conexión segura entre un cliente y un servidor. Aseguran de que los datos transmitidos entre las dos partes estén cifrados y protegidos de un acceso no autorizado. Un certificado SSL autofirmado es un tipo de certificado SSL que es creado y firmado por la misma entidad, en lugar de ser firmado por una Autoridad Certificadora (CA) confiable.

Los certificados SSL autofirmados se utilizan a menudo en entornos de desarrollo o prueba, donde el costo y la complejidad de obtener un certificado firmado por una CA pueden no ser necesarios. También se pueden utilizar en escenarios donde no hay una CA confiable disponible o donde la organización desea tener más control sobre el proceso de gestión de certificados.

Sin embargo, los certificados SSL autofirmados no son confiados por defecto por los navegadores web y otros clientes. Cuando un cliente encuentra un certificado autofirmado, generalmente mostrará un mensaje de advertencia, indicando que el certificado no es confiable. Esto puede causar problemas con aplicaciones web y otros servicios que dependen de conexiones seguras.

Para utilizar un certificado SSL autofirmado en un entorno de producción, debe asegurarse de que el certificado sea confiado por todos los clientes que accederán a su aplicación o servicio. Esto se puede hacer distribuyendo el certificado autofirmado a los clientes y configurándolos para confiar en el certificado.

En el contexto de un registro de Docker, utilizar un certificado SSL autofirmado puede ser una solución práctica, especialmente si está ejecutando un registro privado dentro de su organización. Al generar un certificado autofirmado y configurar Docker para utilizarlo, puede asegurarse de que la comunicación entre el cliente de Docker y el registro sea segura, sin necesidad de un certificado firmado por una CA confiable.

Generación de un certificado SSL autofirmado para un registro de Docker

Requisitos previos

Antes de generar el certificado SSL autofirmado, asegúrese de tener los siguientes requisitos previos:

  • Un sistema basado en Linux (este ejemplo utiliza Ubuntu 22.04)
  • OpenSSL instalado (por lo general, pre-instalado en la mayoría de las distribuciones Linux)

Pasos para generar un certificado SSL autofirmado

  1. Abra una terminal en su sistema Ubuntu 22.04.

  2. Genere una clave privada para el certificado SSL:

openssl genrsa -out registry.key 2048
  1. Genere un certificado SSL autofirmado utilizando la clave privada:
openssl req -new -x509 -key registry.key -out registry.crt -days 365

Este comando le pedirá que ingrese varios detalles sobre el certificado, como el Nombre Común (CN), que debe coincidir con el nombre de host o la dirección IP de su registro de Docker.

  1. Verifique el certificado generado:
openssl x509 -in registry.crt -text -noout

Esto mostrará los detalles del certificado SSL autofirmado generado.

  1. (Opcional) Si desea utilizar un nombre de dominio personalizado para su registro de Docker, puede actualizar el archivo /etc/hosts en el sistema donde se ejecutará el cliente de Docker para mapear el nombre de dominio a la dirección IP del registro de Docker.
graph LR A[Generate Private Key] --> B[Generate Self-Signed SSL Certificate] B --> C[Verify Certificate] C --> D[Update /etc/hosts (Optional)]

Siguiendo estos pasos, ha generado un certificado SSL autofirmado que se puede utilizar para asegurar su registro de Docker. El siguiente paso es configurar Docker para utilizar este certificado autofirmado.

Configurando Docker para utilizar el certificado autofirmado

Copiando el certificado autofirmado al host de Docker

  1. Copie el archivo registry.crt generado en el paso anterior al host de Docker. Puede utilizar una herramienta de transferencia de archivos o el comando scp para copiar el archivo.
scp registry.crt user@docker-host:/etc/docker/certs.d/myregistry.example.com/ca.crt

Reemplace user@docker-host con el usuario y el nombre de host o dirección IP adecuados de su host de Docker, y myregistry.example.com con el nombre de host o dirección IP de su registro de Docker.

Configurando Docker para utilizar el certificado autofirmado

  1. En el host de Docker, cree el directorio para el certificado autofirmado:
sudo mkdir -p /etc/docker/certs.d/myregistry.example.com
  1. Copie el archivo registry.crt al directorio recién creado:
sudo cp registry.crt /etc/docker/certs.d/myregistry.example.com/ca.crt
  1. Reinicie el demonio de Docker para aplicar los cambios:
sudo systemctl restart docker

Verificando la configuración

  1. Intente extraer una imagen de su registro de Docker utilizando el cliente de Docker:
docker pull myregistry.example.com/my-image:latest

Si la configuración es correcta, el cliente de Docker debería poder conectarse al registro sin ningún error relacionado con SSL/TLS.

graph LR A[Copy Certificate to Docker Host] --> B[Create Certificate Directory] B --> C[Copy Certificate to Directory] C --> D[Restart Docker Daemon] D --> E[Verify Configuration]

Siguiendo estos pasos, ha configurado Docker para utilizar el certificado SSL autofirmado para su registro de Docker. Esto asegura que la comunicación entre el cliente de Docker y el registro sea segura, aunque el certificado no sea firmado por una Autoridad Certificadora confiable.

Resumen

Siguiendo los pasos descritos en este tutorial, podrá generar un certificado SSL autofirmado para su registro de Docker, configurar Docker para utilizar el certificado y garantizar una comunicación segura entre sus clientes de Docker y el registro. Esto lo ayudará a mejorar la seguridad de su infraestructura basada en Docker y a simplificar su proceso general de implementación de Docker.