Cómo instalar certificado SSL en Nginx
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:
-
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.
-
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
-
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
-
Mueve el fichero .key al directorio de certificados de Nginx:
mv /var/www/minuevaweb.es/datos/web/certificado.key /etc/nginx/ssl/
-
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
-
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.