Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Nginx Última actualización: 15 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Una guía paso a paso para implementar el certificado Let's Encrypt TLS en Nginx.

Asegurar el sitio con un certificado TLS es esencial. Hay dos razones principales:

  • Transmisión segura de datos entre el dispositivo de un usuario y el dispositivo de descarga SSL/TLS
  • Mejorar el posicionamiento en Google

Últimamente, Google anunciado ese sitio sin https:// se marcaría como "No seguro" en el navegador Chrome.

Así que sí, diga SÍ a HTTPS.

Si usted está ejecutando un blog, sitio personal, no membresía, el sitio transaccional no financiera, entonces usted puede ir para el certificado de Let's Encrypt.

Let's Encrypt ofrece una Certificado GRATUITO.

Sin embargo, si está aceptando una transacción financiera, puede que le convenga optar por un certificado comercial.

Implementemos TLS en Nginx...

Supongo que ya tienes Nginx instalado y funcionando, si no, consulta esto guía de instalación.

Hay múltiples formas de conseguirlo.

Let's Encrypt con Certbot

Una de las formas más fáciles y recomendables de instalarlo.

Certbot ofrece un menú desplegable en el que puede seleccionar el servidor web y el sistema operativo para obtener las instrucciones.

He seleccionado Nginx y Ubuntu como se puede ver a continuación.

certbot-nginx

Y, voy a ejecutar lo siguiente en el servidor Nginx para instalar el plugin certbot.

# apt-get install software-properties-common
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-nginx

Una vez todo ok, es hora de usar el plugin certbot para instalar un certificado en Nginx.

Puede utilizar el siguiente comando que se encargará de modificar el fichero necesario para configurar el certificado.

# certbot --nginx

Comprobará el CN (nombre común) en el archivo de configuración de Nginx existente, y si no lo encuentra le pedirá que lo introduzca.

Ex:

root@instance-1:/etc/nginx/sitios-disponibles# certbot --nginx
Guardando registro de depuración en /var/log/letsencrypt/letsencrypt.log
Plugins seleccionados: Authenticator nginx, Installer nginx
Iniciando nueva conexión HTTPS (1): acme-v01.api.letsencrypt.org
No se han encontrado nombres en sus archivos de configuración. Por favor, introduzca en su dominio
(separados por comas y/o espacios) (Introduce 'c' para cancelar): bloggerflare.com
Obtención de un nuevo certificado
Realizando los siguientes retos:
http-01 challenge for bloggerflare.com
Esperando verificación...
Limpiando retos
Certificado desplegado en VirtualHost /etc/nginx/sites-enabled/default para bloggerflare.com
Por favor, elija si desea redirigir el tráfico HTTP a HTTPS, eliminando el acceso HTTP.
-------------------------------------------------------------------------------
1: No redirigir - No realizar más cambios en la configuración del servidor web.
2: Redirigir - Redirige todas las peticiones a un acceso HTTPS seguro. Elija esta opción para
sitios nuevos, o si está seguro de que su sitio funciona en HTTPS. Puede deshacer este
puede deshacer este cambio editando la configuración de su servidor web.
-------------------------------------------------------------------------------
Selecciona el número apropiado [1-2] y luego [enter] (pulsa 'c' para cancelar): 2
Redirigir todo el tráfico en el puerto 80 a ssl en /etc/nginx/sites-enabled/default
-------------------------------------------------------------------------------
¡Enhorabuena! Ha habilitado correctamente https://bloggerflare.com
Debería probar su configuración en
https://www.ssllabs.com/ssltest/analyze.html?d=bloggerflare.com
-------------------------------------------------------------------------------
NOTAS IMPORTANTES:
 - Enhorabuena. Su certificado y la cadena se han guardado en:
   /etc/letsencrypt/live/bloggerflare.com/fullchain.pem
   Su archivo de claves se ha guardado en:
   /etc/letsencrypt/live/bloggerflare.com/privkey.pem
   Su cert expirará el 2018-05-27. Para obtener una versión
   de este certificado en el futuro, simplemente vuelva a ejecutar certbot
   con la opción "certonly". Para renovar *todos* sus certificados de forma no interactiva
   sus certificados, ejecute "certbot renew".
 - Si te gusta Certbot, por favor considera apoyar nuestro trabajo:
   Donando a ISRG / Let's Encrypt: https://letsencrypt.org/donate
   Donando a EFF: https://eff.org/donate-le
root@instance-1:/etc/nginx/sitios-disponibles#

La automatización de Certbot es inteligente!

Como puedes ver se ha encargado de toda la configuración necesaria para que mi Nginx esté listo para servir sobre https.

Sin embargo, si no quieres que Certbot modifique la configuración por ti, entonces puedes simplemente solicitar el siguiente comando.

# certbot --nginx certonly

El comando anterior no realizará ninguna modificación en su lugar sólo le proporcionará el certificado para que pueda configurarlo de la manera que desee.

Pero, ¿y si no puedes o no quieres utilizar Certbot?

Procedimiento manual

Hay muchas formas de obtener el certificado emitido por Let's Encrypt, pero una de las recomendadas es desde SSL gratis herramienta en línea.

Proporcione su URL y proceda con el método de verificación. Una vez verificado, obtendrá el certificado, la clave privada y la CA.

lets-encrypt-cert

Descárguelos y transfiéralos al servidor Nginx. Vamos a mantenerlos bajo ssl carpeta (crear si no existe) de la ruta de instalación de Nginx

root@instance-2:/etc/nginx/ssl# ls -ltr
-rw-r--r-- 1 root root 1704 Feb 26 10:04 private.key
-rw-r--r-- 1 root root 1647 Feb 26 10:04 ca_bundle.crt
-rw-r--r-- 1 root root 3478 Feb 26 10:57 certificate.crt
root@instance-2:/etc/nginx/ssl# 

Antes de proceder a la modificación de la configuración, debe concatenar certificate.crt y ca_bundle.crt en un único archivo. Pongámosle el nombre tlscert.crt

cat certificado.crt ca_bundle.crt >> tlscert.crt
  • Ir a sites-available y añada lo siguiente en el archivo de configuración del sitio correspondiente
servidor {
Escucha 443;
ssl activado;
ssl_certificate /etc/nginx/ssl/tlscert.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
}
  • Reiniciar Nginx
service nginx restart

Intente acceder al dominio correspondiente a través de HTTPS

nginx-lets-encrypted

Así que aquí tienes, ¡es un éxito!

Como alternativa a Let's Encrypt, también puede utilizar ZeroSSL que se explica aquí sobre la aplicación.

A continuación, es posible que desee probar su sitio para Vulnerabilidad SSL/TLS y solucionarlos si se encuentran.

  • Chandan Kumar
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Nginx
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba el lunes
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder