Certificado SSL en nginx, configuración y puesta en marcha

Si quieres proteger tu web con un certificado SSL en nginx y se te ha caducado, necesitas un nuevo certificado SSL válido y acceso por SSH a tu servidor web para solucionarlo.

Certificado SSL en nginx por SSH
Certificado SSL en nginx por SSH

Si ya has preparado ambas cosas, a continuación te explico como actualizar el certificado SSL de una web vía SSH, pero primero hay que encontrar donde están instalados, para ello vamos a buscar en la ruta por defecto de nginx:

/etc/nginx/sites-available

Ahí nos aparecerán los sitios disponibles, es posible que tengáis otra carpeta más que se llame sites-enabled, entrad hasta ahí, normalmente hay  una carpeta más llamada default, pero pueden estar en otras carpetas según la configuración, nosotros vamos a ver el default ya que es la que contiene la configuración del sitio, es algo como esto:

Archivo de configuración del certificado SSL en nginx

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

# Redirect Options
server {
   listen 80;
   server_name rocket2.zimbra.io;
   # enforce https
   return 301 https://$server_name$request_uri;
}

# HTTPS Server
server {
    listen 443;
    server_name misubdominio.dkreativo.es;

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/certifica.crt;
    ssl_certificate_key /etc/nginx/certifica.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Aunque hay bastantes líneas de configuración para nginx, las líneas que nos interesan son en las que se está declarando la ubicación en el dominio de nuestro certificado SSL:

ssl_certificate /etc/nginx/certifica.crt;
ssl_certificate_key /etc/nginx/certifica.key;

En ambas líneas se está especificando por un lado la Key del certificado y el certificado en sí mismo, ambos archivos ubicados en el lugar que queramos, siempre y cuando tengan permisos para nginx, lo más sencillo es ubicarlos en su misma carpeta o una subcarpeta dentro de ella.

En este caso, ahí se pueden copiar los certificados que nos proporciona el proveedor y garantizamos la accesibilidad por permisos de nginx.

Si tuvieras dudas, en la configuración en el default de nginx nos indica o debe indicarnos donde crearlos o actualizarlos.

Recuerda, los archivos certificado.key y certificado.crt son los necesarios para la configuración del certificado SSL en nginx. La ubicación es solo para indicar donde está, puedes meterlo en alguna carpeta si quieres.

Recuerda para activar el certificado desde SSH

Debes de reiniciar tu servidor nginx para que tome los cambios, ya que si has modificado los archivos de configuración o en este caso de los certificados, es posible que la información esté cacheada o que simplemente no esté tomando correctamente la nueva configuración del certificado el propio motor nginx.

También hacerte saber que si trabajas con algún gestor como Plesk, toda esta problemática no es necesaria, de hecho configurar un certificado SSL en Plesk es muy sencillo tal y como explicamos en el tutorial.

Si tienes cualquier duda, no tengas problema en consultar desde los comentarios y te responderé con la mayor brevedad posible.

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.