nginx ssl

Nginx mejorando la seguridad SSL

En este post, mejoraremos la seguridad de nuestro site con soporte SSL partiendo de la configuración obtenida después de seguir los pasos descritos en Nginx y Let’s Encrypt. Configuración inicial con el certificado obtenido de Let’s Encrypt server { server_name lynks.duckdns.org; root /var/www/miblog/; location \ { try_files $uri $uri/ =404; } access_log /var/log/nginx/lynks.duckdns.org.access.log; listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/lynks.duckdns.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/lynks.duckdns.org/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = lynks.duckdns.org) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name lynks.duckdns.org; return 404; # managed by Certbot } Configuramos nginx, para sugerir a cada visitante utilizar el protocolo HTTPS por defecto: add_header Strict-Transport-Security "max-age=63072000" always; Mediante la siguiente directiva, se indica a los clientes las versiones sportadas del protocolo TLS en nuestro servidor nginx: ssl_protocols TLSv1.2 TLSv1.3; Configuramos los tipos de cifrado disponibles e indicamos que nginx, se encargará de escoger el adecuado: ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; Indicamos la política de sesiones: ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; Activamos OCSP Stapling, un mecanismo para que el cliente valide la autenticidad del certificado: ssl_stapling on; ssl_stapling_verify on; Los cifrados que utilizan el protocolo Diffie-Hellman son vulnerables, ya que usan un cifrado de 1024 bits. Para mejorar la seguridad, creamos un cifrado de 2048 bits, utilizando openssl: $ sudo openssl dhparam -out /etc/nginx/dhparams.pem 2048 Configuramos nginx para que utilice dhparam: ssl_dhparam /etc/nginx/dhparams.pem; Si hemos seguido los pasos anteriores, obtendremos la siguiente configuración: server { listen 443 ssl; server_name lynks.duckdns.org; root /var/www/miblog/; location \ { try_files $uri $uri/ =404; } access_log /var/log/nginx/lynks.duckdns.org.access.log; add_header Strict-Transport-Security "max-age=63072000" always; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/nginx/dhparams.pem; ssl_certificate /etc/letsencrypt/live/lynks.duckdns.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/lynks.duckdns.org/privkey.pem; # managed by Certbot } server { if ($host = lynks.duckdns.org) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name lynks.duckdns.org; return 404; # managed by Certbot } Podemos verificar la seguridad actual de nuestro site, lanzando el test de SSL Labs, donde obtendremos la clasificación A.

26 Mar 2021 · 2 min · Alex Soto

Nginx y Let's Encrypt

Vamos a configurar nginx para publicar contenido por “HTTP/HTTPS”, con un certificado SSL/TLS gratuito de la autoridad certificadora let’s encrypt. Para administrar y automatizar la renovación de los certificados, usaremos la herramienta certbot. Antes de continuar es necesario tener un dominio propio, si vamos a utilizar un host en casa seguramente tengamos una IP dinámic, por lo que hay que asegurarse que nuestro proveedor DNS soporte DDNS. Por suerte hay muchos proveedores gratuitos que soportan clientes con IP dinámic, uno de mis preferidos es duckdns. ...

24 Mar 2021 · 8 min · Alex Soto