GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Let's Encrypt SSL en Nginx en Debian 11

Let's Encrypt es una autoridad de certificación que proporciona certificados SSL gratuitos para sitios web. Sin embargo, no solo ofrece certificados SSL; también automatiza la creación, validación, firma, implementación y renovación de certificados.

Let's Encrypt es la autoridad de certificación más grande del mundo, utilizada por más de 250 millones de sitios web. Se lanzó en noviembre de 2014 con el objetivo de que todos los sitios web fueran seguros y usaran HTTPS.

Actualmente, Let's Encrypt admite la instalación automática de certificados en Apache, Nginx, Plex y Haproxy.

Aquí veremos cómo instalar el certificado SSL de Let's Encrypt para Nginx en Debian 11.

Requisitos

Le recomiendo que configure el servidor web Nginx de instalación en su sistema antes de continuar.

LEER: Cómo instalar la pila LEMP en Debian 11

Crear servidor virtual

Primero, necesitaremos crear un host virtual Nginx para servir la versión HTTP de su sitio web.

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Utilice la siguiente configuración para su sitio web. Recuerde cambiar los valores según sus requisitos.

Puede eliminar la sección PHP Fast CGI si no utiliza CMS como WordPress, Joomla, etc., o aplicaciones basadas en PHP.

server {
   server_name itzgeek.net www.itzgeek.net;
   root /usr/share/nginx/www.itzgeek.net/;

   location / {
       index index.html index.htm index.php;
   }

   access_log /var/log/nginx/www.itzgeek.net.access.log;
   error_log /var/log/nginx/www.itzgeek.net.error.log;

   location ~ \.php$ {
      include fastcgi_params;
      fastcgi_intercept_errors on;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

Una vez que haya creado el archivo de configuración del host virtual, cree un directorio raíz para guardar los archivos de su sitio web.

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/

Luego, cambie la propiedad y el grupo del directorio.

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

Finalmente, coloque el archivo HTML de prueba en la raíz del documento de su dominio.

echo "This is a test site @ www.itzgeek.net" | sudo tee /usr/share/nginx/www.itzgeek.net/index.html

Ahora, deberá reiniciar el servicio Nginx para volver a leer las configuraciones.

sudo systemctl restart nginx

Crear/Actualizar Registro DNS

Para generar el certificado SSL de Let's Encrypt para su dominio, deberá apuntar su dominio a la IP de su servidor. Entonces, vaya a su registrador de dominio y cree un registro A/CNAME para su dominio. Por ejemplo, la siguiente imagen muestra el registro A/CNAME para el dominio www.itzgeek.net.

Los cambios en los registros DNS tardarán en propagarse. Por lo tanto, espere unos minutos u horas, según el TTL que establezca para el registro DNS.

Instalar el certificado SSL Let's Encrypt para Nginx

Instalar Certbot

Además de apuntar un dominio a la IP de su servidor, también deberá instalar el cliente Certbot ACME en su sistema. El cliente de Certbot maneja la emisión e instalación de certificados sin tiempo de inactividad.

Certbot ahora está disponible como un paquete instantáneo para el sistema operativo Debian. Entonces, primero, instale el paquete Snapd.

sudo apt update

sudo apt install -y snapd

Luego, actualice el complemento a la última versión.

sudo snap install core; sudo snap refresh core

Finalmente, instale el cliente Certbot usando el comando snap.

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Instalar certificado Let's Encrypt

Use el comando certbot para crear un certificado de Let's Encrypt y configure Nginx para usar el certificado.

sudo certbot --nginx

Siga las indicaciones interactivas e instale el certificado.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [email protected] << Enter Email ID

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y  << Agree to Terms and Conditions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N << Subscriber to Newsletter
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: itzgeek.net
2. www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1,2 << Choose Site to Install Let's Encrypt SSL Certificate
Requesting a certificate for www.itzgeek.net

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/www.itzgeek.net/privkey.pem
This certificate expires on 2022-01-17.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for www.itzgeek.net to /etc/nginx/conf.d/www.itzgeek.net.conf
Congratulations! You have successfully enabled HTTPS on https://www.itzgeek.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Una vez que active HTTPS para su dominio, el cliente de Certbot colocará las reglas de reescritura necesarias para redirigir el tráfico de HTTP al sitio HTTPS.

En mi caso, ha colocado dos reglas para las siguientes redirecciones.

  1. http://itzgeek.net>> https://itzgeek.net
  2. http://www.itzgeek.net>> https://www.itzgeek.net

Como puede ver, no se llega a la primera redirección a la versión www HTTPS del sitio web. Por lo tanto, es posible que deba seguir la sección a continuación para configurarlo.

Redirigir solicitudes HTTP que no sean www a www HTTPS con Nginx (opcional)

Es posible que desee configurar el servidor Nginx para redirigir el tráfico del sitio HTTP que no es www al sitio WWW HTTPS, es decir, http://itzgeek.net>> https://www.itzgeek.net .

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Agregue la redirección resaltada en la sección SSL.

    listen 443 ssl; # managed by Certbot
 .    .    .
 .    .    .
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    if ($host = itzgeek.net) {
        return 301 https://www.itzgeek.net$request_uri;
    }

Luego, reinicie el servicio Nginx.

sudo systemctl restart nginx

Verificar el certificado Let's Encrypt

Puede verificar el certificado de Let's Encrypt visitando su sitio web.

http://tu-http-sitio-web

O

https://tu-https-sitio-web

Debería obtener la versión HTTPS de su sitio ahora.

Probar certificado SSL

Pruebe su certificado Let's Encrypt SSL para detectar cualquier problema y sus clasificaciones de seguridad en la siguiente URL.

https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net

Renovar el certificado de Let's Encrypt

Los certificados de Let's Encrypt tienen una validez de 90 días, y es muy recomendable renovar los certificados antes de que caduquen. Gracias al servicio systemd, que se ejecuta dos veces al día y renueva automáticamente los certificados que están a punto de caducar.

Pero le recomiendo que ejecute el siguiente comando para simular la renovación automática de su certificado.

sudo certbot renew --dry-run

Salida:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/www.itzgeek.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for www.itzgeek.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded: 
  /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Si el resultado confirma que la renovación funciona correctamente, la renovación automática ocurrirá como se esperaba.

Conclusión

Eso es todo. Espero que haya aprendido a instalar el certificado SSL Let's Encrypt para Nginx en Debian 11. Comparta sus comentarios en la sección de comentarios.


Debian
  1. Cómo instalar Nginx en Debian 9

  2. Cómo instalar Let's Encrypt SSL para NGINX en Rocky Linux 8

  3. Cómo instalar Drupal 9 con Nginx y Lets Encrypt SSL en Debian 10

  4. Cómo instalar Let's Encrypt SSL en Ubuntu 18.04 con Nginx

  5. Cómo instalar Microweber en Debian 9

Cómo instalar Let's Encrypt (Certbot) en CentOS 8

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Debian 11 Bullseye

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Let's Encrypt SSL usando DirectAdmin

Cómo instalar Nginx con Let's Encrypt SSL en Fedora 35

Cómo instalar Nginx en Debian 10