Nginx

Configuración de SSL de Nginx en Linux

Configuración de SSL de Nginx en Linux

SSL (siglas de Secure Socket Layer) es un protocolo web que hace que el tráfico entre el servidor y el cliente sea seguro cifrándolo. Servidor y clientes transmiten el tráfico de forma segura sin riesgo de que la comunicación sea interpretada por terceros. También ayuda al cliente a verificar la identidad del sitio web con el que se está comunicando.

En esta publicación, describiremos cómo configurar SSL para Nginx. Estaremos demostrando el procedimiento utilizando el certificado autofirmado. Un certificado autofirmado solo cifra la conexión pero no valida la identidad de su servidor. Por lo tanto, debe usarse solo para entornos de prueba o para servicios de LAN internos. Para el entorno de producción, es mejor utilizar los certificados firmados por CA (autoridad de certificación).

Prerrequisitos

Para esta publicación, debe tener los siguientes requisitos previos:

El procedimiento explicado aquí se ha realizado en Debian 10 (Buster) máquina.

Paso 1: generar un certificado autofirmado

Nuestro primer paso será generar un certificado autofirmado. Emita el siguiente comando en la Terminal para generar CSR (Solicitud de firma de certificado) y una clave:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.key -out / etc / ssl / certs / selfsigned-nginx.crt

Se le pedirá que proporcione cierta información como el nombre de su país, estado, localidad, nombre común (su nombre de dominio o dirección IP) y dirección de correo electrónico.

En el comando anterior, OpenSSL creará los siguientes dos archivos:

Ahora crea el dhparam.archivo pem usando el siguiente comando:

$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048

Paso 2: configurar Nginx para usar SSL

En el paso anterior, hemos creado el CSR y la clave. Ahora en este paso, configuraremos el Nginx para usar SSL. Para ello, crearemos un fragmento de configuración y agregaremos información sobre nuestros archivos de certificado SSL y ubicaciones de claves.

Emita el siguiente comando en la Terminal para crear un nuevo fragmento de configuración autofirmado.conf archivo en el / etc / nginx / snippets.

$ sudo nano / etc / nginx / snippets / autofirmado.conf

En el archivo, agregue las siguientes líneas:

certificado_ssl / etc / ssl / certs / selfsigned-nginx.crt;
ssl_certificate_key / etc / ssl / private / selfsigned-nginx.clave;

La ssl_certificate se establece en autofirmado-nginx.crt (archivo de certificado) mientras que el ssl_certificate_key se establece en autofirmado-nginx.clave (archivo de clave).

Guarde y cierre el autofirmado.conf expediente.

Ahora crearemos otro archivo de fragmentos ssl-params.conf y configurar algunos ajustes básicos de SSL. Emita el siguiente comando en la Terminal para editar el ssl-params.conf expediente:

$ sudo nano / etc / nginx / snippets / ssl-params.conf

Agregue el siguiente contenido al archivo:

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam / etc / ssl / certs / dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-SHA-AES384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache compartido: SSL: 10 m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 válido = 300 s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; modo = bloquear";

Como no estamos usando un certificado firmado por una CA, hemos desactivado el engrapado SSL. Si está utilizando un certificado firmado por una CA, descomente ssl_stapling entrada.

Paso 3: Configuración de Nginx para usar SSL

Ahora abriremos el archivo de configuración del bloque del servidor Nginx para realizar algunas configuraciones.  En este paso, asumiremos que ya ha configurado el bloque del servidor, que será similar a esto:

servidor
escucha 80;
escuchar [::]: 80;
root / var / www / test.org / html;
índice de índice.índice html.índice htm.nginx-debian.html;
prueba de nombre_servidor.org www.prueba.org;
localización /
try_files $ uri $ uri / = 404;

Para abrir el archivo de configuración del bloque del servidor Nginx, use el siguiente comando:

$ sudo nano / etc / nginx / sites-available / test.org

Ahora modifique el existente servidor bloquear para que se vea así:

servidor
escuchar 443 ssl;
escuchar [::]: 443 ssl;
incluir fragmentos / autofirmado.conf;
incluir fragmentos / ssl-params.conf;
root / var / www / test.org / html;
índice de índice.índice html.índice htm.nginx-debian.html;
prueba de nombre_servidor.org www.prueba.org;

En las configuraciones anteriores, también hemos agregado los fragmentos de SSL autofirmado.conf y ssl-params.conf que hemos configurado anteriormente.

A continuación, agregue un segundo servidor cuadra.

servidor
escucha 80;
escuchar [::]: 80;
prueba de nombre_servidor.org www.prueba.org;
return 302 https: // $ nombre_servidor $ request_uri;

En la configuración anterior, volver 302 redirige el HTTP a HTTPS.

Nota: Asegúrese de reemplazar la prueba.org con su propio nombre de dominio. Ahora guarda y cierra el archivo.

Paso 4: Permita el tráfico SSL a través del firewall

Si un firewall está habilitado en su sistema, deberá permitir el tráfico SSL a través de él.  Nginx le proporciona tres perfiles diferentes con ufw. Puede verlos usando el siguiente comando en la Terminal:

$ sudo ufw lista de aplicaciones

Verá la siguiente salida con tres perfiles para el tráfico de Nginx.

Deberá permitir el perfil "Nginx completo" en el firewall. Para hacerlo, use el siguiente comando:

$ sudo ufw permite 'Nginx completo'

Para verificar si el perfil se ha permitido en el firewall, use el siguiente comando:

estado de $ sudo ufw

Paso 5: Pruebe el archivo de configuración NGINX

Ahora pruebe el archivo de configuración de Nginx usando el siguiente comando en la Terminal:

$ sudo nginx -t

Debería ver la siguiente salida.


Ahora cree el enlace simbólico entre los sitios disponibles y los sitios habilitados:

$ ln -s / etc / nginx / sites-available / test.com / etc / nginx / sites-enabled /

Luego reinicie el servicio Nginx para aplicar los cambios de configuración. Utilice el siguiente comando para hacerlo:

$ sudo systemctl reiniciar nginx

Paso 6: prueba SSL

Ahora para probar el SSL, navegue a la siguiente dirección:

https: // dominio-o-dirección-IP

Como hemos configurado el certificado autofirmado, veremos una advertencia de que la conexión no es segura. La siguiente página aparece cuando se usa el navegador Mozilla Firefox.

Haga clic en el Avanzado botón.

Hacer clic Añadir excepción.

Luego haga clic en Confirmar la excepción de seguridad.

Ahora verá su sitio HTTPS pero con una señal de advertencia (candado con una señal de advertencia amarilla) sobre la seguridad de su sitio web.

Además, verifique si la redirección funciona correctamente accediendo a su dominio o dirección IP usando http.

http: // dominio-o-dirección-IP

Ahora, si su sitio redirige automáticamente a HTTPS, esto significa que la redirección funcionó correctamente. Para configurar la redirección de forma permanente, edite el archivo de configuración del bloque del servidor usando el siguiente comando en la Terminal:

$ sudo nano / etc / nginx / sites-available / test.org

Ahora cambia la devolución 302 regresar 301 en el archivo y luego guárdelo y ciérrelo.

Así es como puede configurar SSL para Nginx en el sistema Debian 10. Hemos configurado el certificado autofirmado para demostración. Si se encuentra en un entorno de producción, siempre busque un certificado de CA.

Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...
Controle y administre el movimiento del mouse entre múltiples monitores en Windows 10
Administrador de mouse de doble pantalla le permite controlar y configurar el movimiento del mouse entre varios monitores, al ralentizar sus movimient...