BLOG | NGINX

Actualizar: Uso de certificados SSL/TLS gratuitos de Let’s Encrypt con NGINX

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Amir Rawdat
Amir Rawdat
Publicado el 28 de enero de 2021

Editor – La publicación del blog que detalla el procedimiento original para usar Let’s Encrypt con NGINX (de febrero de 2016) redirige aquí. Las instrucciones en esa publicación están obsoletas.

Esta publicación se ha actualizado para eliminar la dependencia de certbot‑auto , que la Electronic Frontier Federation (EFF) dejó obsoleto en Certbot 1.10.0 para Debian y Ubuntu y en Certbot 1.11.0 para todos los demás sistemas operativos. Para obtener detalles adicionales y métodos de instalación alternativos, consulte esta publicación de la EFF .

Vea también nuestra entrada de blog de nginx.conf 2015, en la que Peter Eckersley y Yan Zhu de la Electronic Frontier Foundation presentan la entonces nueva autoridad de certificación Let's Encrypt .

Es bien sabido que el cifrado SSL/TLS de su sitio web conduce a clasificaciones de búsqueda más altas y a una mejor seguridad para sus usuarios. Sin embargo, existen una serie de barreras que han impedido que los propietarios de sitios web adopten SSL.

Dos de las mayores barreras han sido el costo y los procesos manuales involucrados en la obtención de un certificado. Pero ahora, con Let's Encrypt , ya no son una preocupación. Let's Encrypt hace que el cifrado SSL/TLS esté disponible gratuitamente para todos.

Let’s Encrypt es una autoridad de certificación (CA) gratuita, automatizada y abierta. Sí, así es: Certificados SSL/TLS gratis. Hoy en día, la mayoría de los navegadores confían en los certificados emitidos por Let’s Encrypt, incluidos los navegadores más antiguos como Internet Explorer en Windows XP SP3. Además, Let’s Encrypt automatiza completamente tanto la emisión como la renovación de certificados.

En esta publicación de blog, cubrimos cómo usar el cliente Let’s Encrypt para generar certificados y cómo configurar automáticamente NGINX Open Source y NGINX Plus para usarlos.

Cómo funciona Let’s Encrypt

Antes de emitir un certificado, Let’s Encrypt valida la propiedad de su dominio. El cliente Let’s Encrypt, que se ejecuta en su host, crea un archivo temporal (un token) con la información requerida. Luego, el servidor de validación Let’s Encrypt realiza una solicitud HTTP para recuperar el archivo y valida el token, lo que verifica que el registro DNS de su dominio se resuelva en el servidor que ejecuta el cliente Let’s Encrypt.

Requisitos previos

Antes de comenzar con Let’s Encrypt, necesitas:

  • Tenga instalado NGINX o NGINX Plus .
  • Poseer o controlar el nombre de dominio registrado para el certificado. Si no tiene un nombre de dominio registrado, puede utilizar un registrador de nombres de dominio, como GoDaddy o dnsexit .
  • Crea un registro DNS que asocie tu nombre de dominio y la dirección IP pública de tu servidor.

Ahora puedes configurar fácilmente Let's Encrypt con NGINX Open Source o NGINX Plus (para facilitar la lectura, de ahora en adelante nos referiremos simplemente a NGINX ).

Nota : Probamos el procedimiento descrito en esta publicación de blog en Ubuntu 16.04 (Xenial).

1.Descargue el cliente Let’s Encrypt

Primero, descargue el cliente Let's Encrypt, certbot .

Como se mencionó anteriormente, probamos las instrucciones en Ubuntu 16.04 y estos son los comandos apropiados en esa plataforma:

$ apt-get update $ sudo apt-get install certbot $ apt-get install python-certbot-nginx

Con Ubuntu 18.04 y posteriores, sustituya la versión de Python 3:

$ apt-get update $ sudo apt-get install certbot $ apt-get install python3-certbot-nginx

2.Configurar NGINX

certbot puede configurar automáticamente NGINX para SSL/TLS. Busca y modifica el bloque de servidor en su configuración NGINX que contiene una directiva server_name con el nombre de dominio para el cual está solicitando un certificado. En nuestro ejemplo, el dominio es www.example.com .

  1. Suponiendo que está comenzando con una nueva instalación de NGINX, use un editor de texto para crear un archivo en el directorio /etc/nginx/conf.d llamado domain‑name .conf (en nuestro ejemplo, www.example.com.conf ).

  2. Especifique su nombre de dominio (y variantes, si las hay) con la directiva server_name :

    servidor { escuchar 80 servidor_predeterminado;
    escuchar [::]:80 servidor_predeterminado;
    raíz /var/www/html;
    nombre_del_servidor ejemplo.com www.ejemplo.com;
    }
  3. Guarde el archivo, luego ejecute este comando para verificar la sintaxis de su configuración y reiniciar NGINX:

    $ nginx -t && nginx -s recargar

3.Obtener el certificado SSL/TLS

El complemento NGINX para certbot se encarga de reconfigurar NGINX y recargar su configuración cuando sea necesario.

  1. Ejecute el siguiente comando para generar certificados con el complemento NGINX:

    $ sudo certbot --nginx -d ejemplo.com -d www.ejemplo.com
  2. Responda a las indicaciones de certbot para configurar sus ajustes HTTPS, lo que implica ingresar su dirección de correo electrónico y aceptar los términos de servicio de Let's Encrypt.

  3. Cuando se completa la generación del certificado, NGINX se vuelve a cargar con la nueva configuración. certbot genera un mensaje que indica que la generación del certificado fue exitosa y especifica la ubicación del certificado en su servidor.

    ¡Enhorabuena! Habilitó correctamente https://example.com y https://www.example.com
    ------------------------------------------------------------------------------------------------
    NOTAS IMPORTANTES: 
    
    ¡Enhorabuena! Su certificado y cadena se han guardado en: /etc/letsencrypt/live/example.com/fullchain.pem
    Su archivo de clave se ha guardado en: /etc/letsencrypt/live/example.com//privkey.pem
    Su certificado caducará el 12/12/2017.

    Nota : Los certificados Let's Encrypt caducan después de 90 días (el 12 de diciembre de 2017 en el ejemplo). Para obtener información sobre la renovación automática de certificados, consulte Renovación automática de certificados Let's Encrypt a continuación.

Si observas el archivo domain‑name.conf , verás que certbot lo ha modificado:

servidor { listen 80 servidor_predeterminado;
listen [::]:80 servidor_predeterminado;
root /var/www/html;
nombre_servidor ejemplo.com www.ejemplo.com;

listen 443 ssl; # administrado por Certbot

# Certificado RSA
certificado_ssl /etc/letsencrypt/live/ejemplo.com/fullchain.pem; # administrado por Certbot
clave_certificado_ssl /etc/letsencrypt/live/ejemplo.com/privkey.pem; # administrado por Certbot

include /etc/letsencrypt/options-ssl-nginx.conf; # administrado por Certbot

# Redirigir tráfico no HTTPS a HTTPS
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # administrado por Certbot
}

4.Renovar automáticamente los certificados Let’s Encrypt

Los certificados Let's Encrypt caducan después de 90 días. Le recomendamos que renueve sus certificados automáticamente. Aquí agregamos un trabajo cron a un archivo crontab existente para hacer esto.

  1. Abra el archivo crontab .

    $ crontab -e
  2. Agregue el comando certbot para que se ejecute diariamente. En este ejemplo, ejecutamos el comando todos los días al mediodía. El comando verifica si el certificado en el servidor caducará dentro de los próximos 30 días y lo renueva si es así. La directiva --quiet le dice a certbot que no genere salida.

    0 12 * * * /usr/bin/certbot renovar --quiet
  3. Guarde y cierre el archivo. Todos los certificados instalados se renovarán y recargarán automáticamente.

  4. resumen

    Hemos instalado el agente Let’s Encrypt para generar certificados SSL/TLS para un nombre de dominio registrado. Hemos configurado NGINX para usar los certificados y configurar renovaciones automáticas de certificados. Con los certificados Let’s Encrypt para NGINX y NGINX Plus, puede tener un sitio web simple y seguro en funcionamiento en cuestión de minutos.

    Para probar Let's Encrypt con NGINX Plus usted mismo, comience hoy su prueba gratuita de 30 días o contáctenos para analizar sus casos de uso .

    Documentación relacionada

    Protección del tráfico HTTP a los servidores ascendentes
    Protección del tráfico TCP a los servidores ascendentes
    Terminación de SSL de NGINX


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.