Table of Contents
Cómo proteger Nginx con Let’s Encrypt en Ubuntu y Debian
Siguiendo el tutorial anterior de Let’s Encrypt. sobre Apache SSL. en este artículo analizaremos cómo generar e instalar un certificado SSL/TLS gratuito emitido por Encriptemos CA. para el servidor web Nginx. en Ubuntu. o Debian.
Lea también
- Apache seguro con Let’s Encrypt gratuito en Ubuntu y Debian
- Instale Let’s Encrypt SSL para asegurar Apache en RHEL y CentOS
Entorno de prueba de muestra
Instalar Lets Encrypt to Secure Nginx en Ubuntu y Debian Requisitos
- Un dominio registrado con registros DNS A válidos para apuntar a la dirección IP de su servidor.
- Un servidor web Nginx instalado con SSL y Vhost habilitados, en caso de que planee alojar múltiples dominios o subdominios.
Paso 1: Instalación del servidor web Nginx
1.. En el primer paso, instale el servidor web Nginx, si aún no está instalado, ejecutando el siguiente comando :
$ sudo apt-get install nginx
Instale el servidor web Nginx en Ubuntu 14.04 y Debian 8
Paso 2: Genere un certificado SSL Let’s Encrypt para Nginx
2.. Antes de generar un certificado SSL/TLS gratuito, instale Let’s Encrypt. en la jerarquía/usr/local/filesystem con la ayuda del cliente git. emitiendo los siguientes comandos:
$ sudo apt-get-y install git $ cd/usr/local/$ sudo git clone https://github.com/letsencrypt/letsencrypt
3.. Aunque el procedimiento para obtener un Certificado para Nginx. está automatizado, aún puede crear e instalar manualmente un certificado SSL gratuito para Nginx utilizando el complemento Let’s Encrypt Standalone .
Este método requiere que el puerto 80. no esté en uso en su sistema por un corto período de tiempo mientras el cliente Let’s Encrypt valida la identidad del servidor antes de generar el certificado.
freestar. sudo service nginx stop O $ sudo systemctl stop nginx
En caso de que esté ejecutando otro servicio que se vincule en el puerto 80. detenga ese servicio también.
$ sudo netstat-tlpn | grep 80
Comprobar los puertos de escucha actuales en Linux
5.. Ahora es el momento de ejecutar letsencrypt para obtener un Certificado SSL. Vaya al directorio de instalación de Let’s Encrypt. que se encuentra en la ruta del sistema /usr/local/letsencrypt. y ejecute el comando letsencrypt-auto. proporcionando el certificado: opción independiente y marca-d para cada dominio o subdominio que desee generar un certificado.
$ cd/usr/local/letsencrypt $ sudo ./letsencrypt-auto certonly–standalone-d your_domain.tld
Obtenga el certificado SSL Let’s Encrypt
6.. Ingrese la dirección de correo electrónico que Let’s Encrypt utilizará para la recuperación de claves perdidas o avisos urgentes.
Ingrese la dirección de correo electrónico
7.. Acepte los términos de la licencia presionando la tecla Enter.
Aceptar el acuerdo de Letsencrypt
8.. Finalmente, si todo salió bien, un mensaje similar a la captura de pantalla a continuación debería aparecer en la consola de su terminal.
Acabados de instalación de Letsencrypt
Paso 3: Instale el certificado SSL Let’s Encrypt en Nginx
9.. Ahora que se ha generado su certificado SSL, es el momento de configurar el servidor web Nginx para usarlo. Los nuevos certificados SSL se colocan en/etc/letsencrypt/live/en un directorio con el nombre de su nombre de dominio. Ejecute el comando ls para enumerar los archivos de certificado emitidos para su dominio.
$ sudo ls/etc/letsencrypt/live/$ sudo ls-al/etc/letsencrypt/live/caeszar.tk
Certificados SSL Letsencrypt
10.. A continuación, abra el archivo/etc/nginx/sites-available/default con un editor de texto y agregue el siguiente bloque después de la primera línea comentada que especifica el comienzo del bloque SSL. Utilice la siguiente captura de pantalla como guía.
$ sudo nano/etc/nginx/sites-enabled/default
Extracto del bloque Nginx:
# Configuración SSL # listen 443 ssl default_server; ssl_certificate/etc/letsencrypt/live/caeszar.tk/fullchain.pem; ssl_certificate_key/etc/letsencrypt/live/caeszar.tk/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ‘EECDH + AESGCM: EDH + AESGCM: AES256 + EECDH: AES256 + EDH’; ssl_dhparam/etc/nginx/ssl/dhparams.pem;
Configurar Nginx para usar Let’s Encrypt SSL
Reemplace los valores de nombre de dominio por certificados SSL en consecuencia.
11.. En el siguiente paso, genere un cifrado fuerte Diffie-Hellman. en el directorio /etc/nginx/ssl/ para proteger su servidor contra el Logjam. mediante la ejecución de los siguientes comandos.
$ sudo mkdir/etc/nginx/ssl $ cd/etc/nginx/ssl $ sudo openssl dhparam-out dhparams.pem 2048
Generar cifrado Diffie Hellman para Nginx
12.. Finalmente, reinicie el demonio Nginx para reflejar los cambios.
$ sudo systemctl restart nginx
y pruebe su certificado SSL visitando la siguiente URL.
https://www.ssllabs.com/ssltest/analyze.html
Check Nginx Lets Encrypt SSL Certificate
Paso 4: Renovación automática Let’s Encrypt Nginx Certificates
13.. Certificados emitidos por Let’s Encrypt CA. son válidos por 90 días. Para renovar automáticamente los archivos antes de la fecha de vencimiento, cree el script bash ssl-renew.sh en el directorio/usr/local/bin/con el siguiente contenido.
$ sudo nano/usr/local/bin/ssl-renew. sh
Agregue el siguiente contenido al archivo ssl-renew.sh.
#!/bin/bash cd/usr/local/letsencrypt sudo ./letsencrypt-auto certonly-a webroot–agree-tos-renovar por defecto–webroot-path =/var/www/html/-d your_domain.tld sudo systemctl reload nginx exit 0
La renovación automática de Nginx permite cifrar el certificado SSL
Reemplace la variable–webroot-path para que coincida con la raíz de su documento Nginx. Asegúrese de que el script sea ejecutable emitiendo el siguiente comando.
$ sudo chmod + x/usr/local/bin/ssl-renew.sh
14.. Finalmente agregue un trabajo cron para ejecutar el script cada dos meses a la medianoche para asegurar que su certificado sea actualizado en aproximadamente 30 días antes de que expire.
$ sudo crontab-e
Agregue la siguiente línea al final del archivo.