SSL (acrónimo de Secure Sockets Layer), protocolo criptográfico para comunicaciones seguras por red y suele ser un plus de seguridad que se aplica a muchos protocolos.
En nuestro caso nos vamos a centrar en la WEB (acrónimo de World Wide Web), al aplicarle el SSL, en vez de usar el protocolo HTTP (por defecto usa el puerto 80) usaríamos el protocolo HTTPS (por defecto usa el puerto 443).
Para poder usar HTTPS necesitamos de un certificado digital, por norma general tiene una vigencia y son de pago.
Hace algún tiempo existía una entidad certificadora que proporcionaba certificados válidos de forma gratuita (STARTCOM o STARTSSL), pero fue sancionada y sus certificados fueron añadidos a la lista negra de los navegadores. Esto hacía que al navegar por dichas páginas saliera la advertencia de navegación insegura.
Posteriormente apareció una alternativa a esto que se llama Let’s Encrypt, es gratuita, realiza la función y por tanto muy interesante. Vamos a ver como aplicarla en nuestro servicio WEB.
INSTALACIÓN:
$ add-apt-repository ppa:certbot/certbot
$ apt-get update
$ apt-get install certbot
CONFIGURACIÓN:
Una vez instalado tendremos que añadir las siguientes líneas a nuestro servicio WEB (en nuestro caso NGINX) editando el fichero nano /etc/nginx/sites-available/default
location ~ /.well-known {
allow all;
}
Por tal de comprobar la sintaxis del fichero de configuración de nuestro servidor WEB NGINX podremos hacerlo vía:
$ nginx -t
Si todo es correcto pasaremos a obtener el certificado para el dominio y ruta con el comando:
$ certbot certonly –webroot –webroot-path=/var/www/html/RUTA -d DOMINIO.DDNS.NET
Posteriormente certbot se encargará de renovar el certificado automáticamente.
Se recuerda que en el fichero nano /etc/nginx/sites-available/default se hace referencia al fichero include snippets/ssl-DOMINIO.DDNS.NET.conf que incluye la ruta de los certificados generados por cerbot, concretamente:
ssl_certificate /etc/letsencrypt/live/DOMINIO.DDNS.NET/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/DOMINIO.DDNS.NET/privkey.pem;
Finalmente para ver todo aplicado se debe reiniciar el servicio con el comando service nginx restart.
Para probarlo tan solo se debería acceder a https://DOMINIO.DDNS.NET desde fuera de tu red local y verificar que se navega bajo el protocolo HTTPS (para que funcione desde dentro de tu red local es necesario realizar unas acciones en los DNS de tu router, explicado en dicha sección).
En caso concreto de tener que forzar la renovación del certificado se tendría que ejecutar el comando siguiente desde la máquina que tiene instalado el Nginx:
cerbot renew