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.
- http://itzgeek.net>> https://itzgeek.net
- 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-webO
https://tu-https-sitio-webDeberí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.netRenovar 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.