· Tutorial ·

Cómo instalar certificado SSL en Nginx

Antes de empezar con el tutorial, ¿no tienes un servidor Cloud Linux en el que puedas instalar tu servidor web nginx? ¡No te preocupes! Con solo un clic, puedes desplegarlo fácilmente con SW Hosting.

Tu Cloud SO desde 5,60$/mes

Sácale el máximo partido a tu proyecto con el Cloud que tiene los discos más rápidos y CPU de alto rendimiento.

Para instalar un certificado SSL en Nginx, necesitaremos los siguientes ficheros:

  • Certificado (.crt)
  • Clave privada (.key)
  • Autoridad de certificación (.ca)

¿Ya los tienes? Empezamos:

  1. Copia los tres ficheros en el servidor. En este manual, asumimos que has subido los tres ficheros mediante FTP, pero puedes realizarlo de cualquier otra forma.

  2. Conéctate al servidor mediante SSH y accede al directorio en el que se encuentran los certificados. Si los has subido al directorio 'web': cd /var/www/minuevaweb.es/datos/web

  3. Conecta el fichero .crt con el fichero .ca, y lo guardas en el directorio de certificados de Nginx: cat /var/www/minuevaweb.es/datos/web/certificado.crt /var/www/minuevaweb.es/datos/web/certificado.ca >> /etc/nginx/swhosting/ssl/certificados.crt

  4. Mueve el fichero .key al directorio de certificados de Nginx: mv /var/www/minuevaweb.es/datos/web/certificado.key /etc/nginx/ssl/

  5. Elimina los archivos de certificado de la carpeta web, para asegurarte que no sean públicos. rm /var/www/minuevaweb.es/datos/web/certificado.crt rm /var/www/minuevaweb.es/datos/web/certificado.ca

  6. Accede al directorio de certificados y cambia el propietario y grupo de los mismos a root: cd /etc/nginx/ssl chown root:root certificados.crt certificado.key

Ya hemos copiado los certificados en el directorio correspondiente.

A continuación procedemos a modificar el archivo de configuración correspondiente a nuestra web:

  • Accede al directorio de ficheros de configuración vhosts: cd /etc/nginx/sites-enabled/

  • Edita el fichero de configuración correspondiente a la web en la que estás instalando el certificado SSL. En este ejemplo utilizamos el editor de textos nano, pero puedes hacer uso de cualquier otro: nano minuevaweb.es.conf

  • Haz una copia del primer bloque existente debajo del mismo, quedará duplicado:

# nginx virtual host for domain 'minuevaweb.es'
server {
        listen 80;
        root "/var/www/minuevaweb.es/datos/web";
        index index.html index.php;
        server_name minuevaweb.es www.minuevaweb.es;
        access_log /var/www/minuevaweb.es/logs/20190307.log;
        error_log /var/www/minuevaweb.es/logs/error_20190307.log;
        include /etc/nginx/php7.2.conf;
}

(el archivo original)

server {
        listen 80;
        root "/var/www/minuevaweb.es/datos/web";
        index index.html index.php;
        server_name minuevaweb.es www.minuevaweb.es;
        access_log /var/www/minuevaweb.es/logs/20190307.log;
        error_log /var/www/minuevaweb.es/logs/error_20190307.log;
        include /etc/nginx/php7.2.conf;
}
server {
        listen 80;
        root "/var/www/minuevaweb.es/datos/web";
        index index.html index.php;
        server_name minuevaweb.es www.minuevaweb.es;
        access_log /var/www/minuevaweb.es/logs/20190307.log;
        error_log /var/www/minuevaweb.es/logs/error_20190307.log;
        include /etc/nginx/php7.2.conf;
}

(el archivo con la copia original)

  • En el segundo bloque, modificamos el puerto de 80 a 443:
server {
        listen 443;
        ...
  • En el segundo bloque, después del puerto (parámetro listen), añadimos las siguientes líneas con las rutas correspondientes a nuestros certificados:
        ...
        ssl on;
        ssl_certificate /etc/nginx/ssl/certificados.crt;
        ssl_certificate_key /etc/nginx/ssl/certificado.key;
        ...
  • Quedará de la siguiente forma:
# nginx virtual host for domain 'minuevaweb.es'
server {
        listen 80;
        root "/var/www/minuevaweb.es/datos/web";
        index index.html index.php;
        server_name minuevaweb.es www.minuevaweb.es;
        access_log /var/www/minuevaweb.es/logs/20190307.log;
        error_log /var/www/minuevaweb.es/logs/error_20190307.log;
        include /etc/nginx/php7.2.conf;
}
server {
        listen 443;
        ssl on;
        ssl_certificate /etc/nginx/ssl/certificados.crt;
        ssl_certificate_key /etc/nginx/ssl/certificado.key;
        root "/var/www/minuevaweb.es/datos/web";
        index index.html index.php;
        server_name minuevaweb.es www.minuevaweb.es;
        access_log /var/www/minuevaweb.es/logs/20190307.log;
        error_log /var/www/minuevaweb.es/logs/error_20190307.log;
        include /etc/nginx/php7.2.conf;
}
  • Guarda los cambios realizados. En el editor de textos nano, debes pulsar la siguiente combinación de teclas: Ctrl + X para guardar y salir Tecla Y para confirmar que quieres sobrescribir Tecla Enter

  • Comprueba que la configuración sea correcta: nginx -t Si aparece algún error, repasa los pasos anteriores.

  • Recarga la configuración de Nginx para que se apliquen los cambios: /etc/init.d/nginx reload

¡Listo! Accede a tu web con el prefijo https:// para verificar que funciona correctamente.

Recuerda que si no dispones aun de un servidor Cloud con sistema operativo Linux puedes desplegarlo fácilmente con SW Hosting.

Tu Cloud SO desde 5,60$/mes

Sácale el máximo partido a tu proyecto con el Cloud que tiene los discos más rápidos y CPU de alto rendimiento.

i