Contenedores Docker para obtener certificados SSL auto renovables con Let's Encrypt en nuestro sistema!
Procedemos a crear nuestro directorio y crear/alojar nuestro docker-compose.yml
mkdir nombre_proyecto
cd nombre_proyecto
touch docker-compose.yml #Escribimos o alojamos el .yml en este directorioLuego de esto procedemos a ejecutar nuestro docker-compose.yml con la siguiente instrucción
docker-compose up -d #Levantamos el contenido del docker-compose.yml y le decimos que se mantenga ejecutandoseLo primero que se realizará será verificar si las imagenes(y su versión) que mencionamos en nuestro .yml ya están alojadas en nuestro sistema. De no estarlo, automaticamente se descargarán. Para ver las imagenes descargadas y su versión, podemos ejecutar la siguiente instrucción
docker image lsLuego de lo mencionado en el apartado anterior, Docker generará y desplegará 3 contenedores.
-
El primer contenedor tendrá nuestro nginx-proxy y se encargará de lo siguiente:
- Comunicarse con la red pública/externa, evitando que el contenedor donde se aloja nuestro sistema haga esta tarea. (Exponiendo el p80 y el p443)
- Comunicarse con el contenedor Let's Encrypt
-
El segundo contenedor tendrá Let'sEncrypt y se encargará de lo siguiente:
- Conectarse a Let's Encrypt y con las variables de entorno saber para que dominio debe crear un certificado SSL.
- Por defecto cada 1 hora preguntará si el certificado SSL es válido, de no serlo generará uno nuevo.
-
El tercer contenedor tendrá nuestro sitio y se encargará de lo siguiente
- Exponer a la red interna Docker el puerto 80 (para comunicarse con el contenedor nginx-proxy)
- Desplegar nuestro sitio/sistema
Por ultimo, para verificar que nuestros contenedores están deplegados y ejecutandose podemos ejecutar la siguiente instrucción, la cúal nos debería mostrar los 3 contenedores mencionados anteriormente
docker ps(Opcional) En caso de que se quiera ver el log detallado de todas las acciones que realiza el contenedor de Let's Encrypt para generar el certificado SSL, podemos ejecutar la siguiente instrucción
docker-compose -f letsencrypt #U otro nombre en caso de que se haya renombrado el contenedorHerramienta que nos va a permite definir nuestro servidor web y también nuestro proxy. (https://www.nginx.com/)
Herramienta que nos va a permite automatizar el despliegue de nuestro sistema utilizando contenedores de software. (https://www.docker.com/) Esta herramienta es la única que debe estar instalada en la VM.
Herramienta que nos va a permitir utilizando un archivo YAML (.yml) simplificar el uso de Docker.
Autoridad de certificación gratuita que nos proporcionará certificados gratuitos para el crigrado de seguridad de nuestro sistema. (https://letsencrypt.org/)
Corriendo sobre una VM con Ubuntu 18.04 LTS
Debemos tener nuestro Nginx del contenedor "sistema_personal" previamente configurado para que muestre nuestro sistema a través del navegador. Luego de esto recomendamos crear una imagen con esta configurtación, cuyo nombre deberá ser ingresado en la opción correspondiente al contenedor "sistema_personal" de nuestro docker-compose.yml
Otra opción es también ocupar una imagen nginx ya creada (https://hub.docker.com/) y simplemente indicarle en el docker-compose.yml donde está el index.html