Get it on Google Play
Tu partner Freelance para tus proyectos IT

Configurar un contenedor con Nginx como proxy SSL con certificado Let’s encrypt

22-01-2020
Ssl Nginx Letsencrypt

Ssl Nginx Letsencrypt

Me piden a menudo como configurar el acceso seguro a un servicio que tengamos corriendo y lo mas fácil es hacerlo con un contenedor docker. En este post voy a explicar paso a paso como lo hago.

Lo primero será arrancar un contenedor con Ubuntu y mapear los puertos 80 y 443 de la máquina ya que este contenedor será el encargado de ofrecer el servicio:

docker run -it ubuntu:latest

Una vez dentro del contenedor instalaremos las dependencias:

apt-get update
apt-get install -y certbot nginx  nano

Ahora ya podremos pedir nuestro certificado a “Let’s encrypt”(Atención! Es importante que las DNS del dominio apunten al servidor):

certbot certonly --standalone -d midominio.com

‘Certbot’ nos pedirá una serie de pasos y nos descargará el certificado.
Ahora vamos a configurar nuestro Nginx mediante el editor de texto ‘nano’ que hemos instalado junto con las dependencias. Ejecutamos ‘/etc/nginx/conf.d/default.conf’ y creamos el fichero:

server {
        listen 80 default_server;
        client_max_body_size 500M;
        return 301 https://midominio.com$request_uri;
        }

server {
        ssl_stapling off;
        ssl_stapling_verify off;
        listen 443 ssl;
        client_max_body_size 1500M;
        server_name midominio.com;
        ssl_certificate     /etc/letsencrypt/live/registry.albertcoronado.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/registry.albertcoronado.com/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        location / {
                proxy_pass http://ruta a mi servicio;
                proxy_read_timeout 360s;
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                proxy_redirect off;
                proxy_buffering off;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                }
        }

En alguna ocasión he tenido que eliminar el fichero ‘/etc/nginx/sites-enableddefault’. Y finalmente arrancamos el servicio Nginx:

service nginx start

Para renovar los certificados solo tendréis que ejecutar:

certbot renew
Si te ha servido, por favor comparte

Interesado en formación Docker?

 

Leave a Reply