Si está sirviendo sitios web desde su centro de datos Linux y usando NGINX, necesita habilitar SSL para una solución más segura.
Secure Sockets Layer (SSL) se ha convertido en una necesidad para los servidores web. Por qué? Porque la seguridad ha sido forzada a ser el centro de atención, y todas las empresas se enfrentan ahora al hecho de que sus servidores web deben servir el contenido de forma segura.
Lecturas imprescindibles del centro de datos
Para ello, debe hacer uso de SSL. Si usted trabaja con NGINX, está de suerte, ya que el proceso es bastante posible (aunque un poco complicado.
Quiero guiarle a través de los pasos para habilitar SSL en un servidor Ubuntu 18.04, ejecutando NGINX. Demostraré esto con un certificado autofirmado, pero un certificado de una Autoridad Certificadora oficial (CA) es una opción mucho mejor. De hecho, debe utilizar el certificado autofirmado sólo como medio para realizar pruebas.
VER: Plan de recuperación en caso de desastre y continuidad de las operaciones (Tech Pro Research)
Lo que necesitas
Para lograr esto, necesitará que NGINX se ejecute en Ubuntu Server 18.04, con un certificado autofirmado. Asumiré que ya tienes Ubuntu y NGINX funcionando. Explicaremos el proceso de creación del certificado autofirmado.
Certificado autofirmado
El primer paso es generar su certificado autofirmado. Para ello, inicie sesión en su servidor y emita el siguiente comando:
sudo openssl req -x509 -nodos -días 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Se le harán algunas preguntas (como el nombre del país, estado, localidad, etc.. La respuesta más importante es el nombre común. Para esta pregunta, responda con la dirección IP del servidor (.
Una vez completado el comando, los ficheros necesarios se añadirán al directorio /etc/ssl y estarán listos para su uso.
Configurar NGINX
Ahora necesitamos configurar NGINX para usar SSL. Primero, cree un nuevo archivo de fragmentos de configuración con el comando:
sudo nano /etc/nginx/snippets/self-signed.conf
En ese nuevo archivo, agregue el siguiente contenido:
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
Guarde y cierre ese archivo.
A continuación, cree un segundo fragmento de configuración que apunte a nuestra nueva clave y certificado SSL. Para ello, ejecute el comando:
sudo nano /etc/nginx/snippets/ssl-params.conf
En ese nuevo archivo, agregue el siguiente contenido:
ssl_protocolos 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-RSA-AES256-SHA384;ssl_ecdh_curve secp384r1; # Requiere nginx >= 1.1.0ssl_session_timeout 10m;ssl_session_cache shared:SSL:10m;ssl_session_tickets off; # Requiere nginx >= 1.5.9# ssl_stapling on; # Requiere nginx >= 1.3.7# ssl_stapling_verify on; # Requiere nginx => 1.3.7resolución 8.8.8.8.8 8.8.4.4 val=300s;resolver_timeout 5s;add_header X-Frame-Options DENY;add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";
Debido a que estamos utilizando un certificado autofirmado, desactivamos el grapado SSL (un método para determinar de forma rápida y segura si un certificado SSL es válido o no. Si no está utilizando un certificado autofirmado, elimine los símbolos # antes de las dos líneas. También puede cambiar la línea de resolución para que refleje sus servidores DNS preferidos. Guarde y cierre ese archivo.
También necesitamos generar el archivo dhparam.pem con el comando:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
El comando anterior tomará algún tiempo.
El siguiente paso es configurar NGINX para que sea consciente de que vamos a utilizar SSL. Supongamos que tiene un bloque de servidor, por ejemplo.com en los sitios disponibles. Abra ese bloque de servidor con el comando:
sudo nano /etc/nginx/sites-available/example.com
En ese archivo, edítelo para que refleje lo siguiente:
server { listen 443 ssl; listen [::]:443 ssl; include snippets/self-signed.conf; include snippets/ssl-params.conf; server_name example.com www.example.com; root /var/www/example.com/html; index.html index.html index.htm index.nginx-debian.html;}
Debajo de eso, agregue un nuevo bloque de servidor (para realizar una redirección HTTPS) de esta manera:
server { listen 80; listen [::]:80; server_name example.com https://; return 302 www.example.com$server_name$request_uri;}}.
Finalmente, necesitamos enlazar desde sitios -disponibles a sitios- habilitados con el comando:
ln -s /etc/nginx/sites-available/www.example.com /etc/nginx/sites-enabled/
Compruebe los perfiles
Usando ufw, podemos comprobar nuestros nuevos perfiles habilitados para SSL con el comando:
lista de aplicaciones sudo ufw
Esto debería mostrar claramente que NGINX HTTPS está habilitado .
Reinicie NGINX con el comando:
sudo systemctl reiniciar nginx
Ahora debería poder dirigir un navegador a https://SERVER_IP (donde SERVER_IP es la dirección IP de su servidor) y ver (porque estamos usando un certificado autofirmado) una advertencia sobre la seguridad del certificado .
Enhorabuena, ahora tiene SSL trabajando en NGINX. Los servidores web de su centro de datos son más seguros.
Boletín de noticias de Data Center Trends
DevOps, virtualización, la nube híbrida, el almacenamiento y la eficiencia operativa son sólo algunos de los temas del centro de datos que destacaremos. Entregado Lunes y Miércoles
mismo