GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo proteger Nginx con Letsencrypt en Ubuntu 20.04

Fue desarrollado por el Grupo de Investigación de Seguridad de Internet (ISRG) y cuenta con la confianza de todos los principales navegadores. Se utiliza para automatizar el proceso de creación, validación, firma, implementación y renovación de certificados para sitios web seguros.

El certificado es válido solo por 90 días, por lo que deberá renovarlo manualmente o configurar el sistema de renovación automática,

Let's encrypt admite la emisión de certificación automatizada para Apache, Nginx, Plex y HAproxy. Cubriremos nginx en esta guía.

Contenido relacionado

  • Cómo proteger Nginx con Letsencrypt en Rocky Linux/Centos 8
  • Cómo instalar y configurar Nginx, WordPress y Mysql 8 en Rocky Linux/Centos 8
  • Cómo instalar Nginx y configurar el host virtual en Ubuntu 20.04

Requisitos previos:

  • Un servidor Ubuntu 20.04 con acceso a Internet e IP pública
  • Un nombre de dominio válido con DNS apuntado al servidor
  • Acceso raíz o acceso sudo al servidor

Instalación del cliente Certbot Let's Encrypt

Inicie sesión en el servidor usando ssh [email protected] -p port :

ssh [email protected]

Actualice todos sus paquetes a sus últimas versiones disponibles.

sudo apt update
sudo apt upgrade -y

Instalar Nginx

sudo apt install -y nginx

Iniciar y habilitar nginx

systemctl start nginx
systemctl enable nginx

Vamos a crear la configuración nginx para site1.citizix.com:

Abra el archivo de configuración con su editor de texto:

sudo vim /etc/nginx/conf.d/site1.conf

Añade este contenido:

server {
    listen 80;
    server_tokens off;
    client_max_body_size 10M;
    server_name site1.citizix.com;

    access_log /var/log/nginx/site1.citizix.com/access.log;
    error_log /var/log/nginx/site1.citizix.com/error.log;
    ignore_invalid_headers off;

    ## Deny illegal Host headers
    if ($host !~* ^(site1.citizix.com)$ ) {
        return 444;
    }

    root /var/www/site1.citizix.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Scheme $scheme;
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }

}

Instalar el cliente Certbot

El Certbot es una herramienta de línea de comandos que se utiliza para simplificar el proceso de obtención y renovación de los certificados SSL de Let's Encrypt para su sitio web. Use este comando para instalarlo junto con las dependencias de Python:

sudo apt install certbot python3-certbot-nginx

si tiene un firewall ufw instalado y habilitado, abra el tráfico http y https desde la web:

ufw allow 80
ufw allow 443
ufw reload

Obtención de un Certificado

Detener nginx:

sudo systemctl stop nginx
sudo certbot --nginx --non-interactive --agree-tos --email [email protected] -d site1.citizix.com

Salida

# sudo certbot --nginx --non-interactive --agree-tos --email [email protected] -d site1.citizix.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Account registered.
Requesting a certificate for site1.citizix.com
Performing the following challenges:
http-01 challenge for site1.citizix.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/site1.citizix.com.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/site1.citizix.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled
https://site1.citizix.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/site1.citizix.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/site1.citizix.com/privkey.pem
   Your certificate will expire on 2021-11-05. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again with the "certonly" option. To non-interactively
   renew *all* of your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Iniciar nginx:

sudo systemctl start nginx

Actualice la configuración de Nginx para redirigir el tráfico http a https

server {
    server_tokens off;
    client_max_body_size 10M;
    server_name site1.citizix.com;

    access_log /var/log/nginx/site1.citizix.com/access.log;
    error_log /var/log/nginx/site1.citizix.com/error.log;
    ignore_invalid_headers off;

    ## Deny illegal Host headers
    if ($host !~* ^(site1.citizix.com)$ ) {
        return 444;
    }

    root /var/www/site1.citizix.com;

    location / {
        proxy_pass http://127.0.0.1:8096;
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Scheme $scheme;
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/site1.citizix.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site1.citizix.com/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 = site1.citizix.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name site1.citizix.com;
    return 404; # managed by Certbot
}

Ubuntu
  1. Cómo proteger Nginx con Lets Encrypt en Ubuntu 20.04/18.04

  2. Cómo instalar WordPress con Nginx en Ubuntu 18.04

  3. Asegure Nginx con Let's Encrypt en Ubuntu 18.04 - ¿Cómo hacerlo?

  4. Cómo asegurar Nginx con Letsencrypt en Rocky Linux/Centos 8

  5. Cómo proteger Nginx con Let's Encrypt en Ubuntu 20.04

Cómo instalar Redmine 3.2 con Nginx en Ubuntu 16.04

Cómo instalar OSClass con Nginx en Ubuntu 20.04

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04

Cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx

Cómo instalar LetsEncrypt con Nginx en Ubuntu 15.04

Cómo proteger Nginx con Let's Encrypt en Ubuntu 20.04