Certificados SSL/TLS
Última actualización
Última actualización
Las siglas SSL/TLS significa Secure Sockets Layer (Capa de sockets seguros) /Transport Layer Security (Seguridad en la capa de transporte), se trata de un protocolo de seguridad que crea un enlace cifrado entre un servidor web y un navegador web.
Su funcionamiento es el siguiente:
Los certificados SSL/TLS crean confianza entre los usuarios del sitio web. Las características de una página web protegida son las siguientes:
Un ícono de candado y una barra de direcciones verde en el navegador web
Un prefijo https en la dirección del sitio web del navegador
Un certificado SSL/TLS válido. Puede comprobar si el certificado SSL/TLS es válido haciendo clic y expandiendo el ícono del candado en la barra de direcciones URL
Una vez establecida la conexión cifrada, aunque se intercepten, solo el cliente y el servidor web pueden ver los datos que se envían.
Para instalar un certificado SSL en Nginx, necesitaremos los siguientes ficheros:
Certificado (.crt)
Clave privada (.key)
Autoridad de certificación (.ca)
Partimos de Certbot, una herramienta de Let's Encrypt que facilita la obtención y renovación de certificados SSL/TLS. Instálala en tu servidor Ubuntu ejecutando los siguientes comandos:
De forma específica, Certbot funciona buscando una directiva server_name
que coincida con el dominio para el que está solicitando el certificado. Si hemos seguido el tutorial anterior, deberías poder revisar dentro del archivo de configuración /etc/nginx/sites-available/wpalex.org
y busca la linea con server_name
.
Asegúrate también, que el servidor web esté detenido antes de ejecutar Certbot, ya que este suele intentar detener y reiniciar el servidor web durante el proceso de obtención del certificado:
Si tienes configurado el firewall de ufw
, deberás ajustar la configuración para permitir el tráfico de HTTPS. Afortunadamente, Nginx registra algunos perfiles con ufw
después de la instalación. Puede ver la configuración actual del FW escribiendo lo siguiente:
Probablemente tendrá este aspecto, lo cual significa que solo se permite el tráfico de HTTP al servidor web:
Para permitir de forma adicional el tráfico de HTTPS, habilite el perfil de Nginx Full y elimine el permiso de perfil redundante HTTP de Nginx.
Ahora, su estado debería tener el siguiente aspecto:
Ejecuta Certbot para obtener un certificado SSL/TLS. Para que funcione, debe poder encontrar el bloque server{}
correcto en su configuración de Nginx para que pueda configurar SSL automáticamente como hemos revisado antes.
Reemplaza alexwp.org
con el nombre de dominio o la dirección IP de tu servidor. Elparámetro -d
para especificar los nombres de dominio para los que queremos que el certificado sea válido.
La primera vez que ejecutas certbot
, se te pide ingresar una dirección de correo electrónico y que aceptes las condiciones de servicio.
Si la comprobación se realiza correctamente, certbot
le preguntará cómo desea configurar sus ajustes de HTTPS:
Escoge 2., luego aparecerá un mensaje:
Los certificados de Let’s Encrypt son válidos únicamente por noventa días. El propósito de esto es incentivar a los usuarios a automatizar sus procesos de renovación de certificados. El paquete certbot
que instalamos se ocupa de esto por nosotros añadiendo un temporizador systemd que se ejecutará dos veces al día y renovará automáticamente cualquier certificado que vaya a vencer en los próximos 30 días.
Puede consultar el estado del temporizador con systemctl
:
De esta forma aparecerá:
Para probar el proceso de renovación, puede hacer un simulacro con certbot
:
Si no ve errores, estará listo. Cuando sea necesario, Certbot renovará sus certificados y volverá a cargar Nginx para registrar los cambios. Si el proceso de renovación automática falla, Let’s Encrypt enviará un mensaje a la dirección de correo electrónico que especificó en el que se le advertirá cuándo se aproxime la fecha de vencimiento de sus certificados.
Referencias:
(...)
Usaremos Let's encrypt como software de validación de certificados, ya que es una solución segura, probada y gratutita. Simplifica el proceso al proporcionar un cliente de software, Certbot, que intenta automatizar la mayoría (cuando no todos) de los pasos requeridos.
Partimos de un servidor web con Ubuntu server 22.04 con nginx versión 1.18 con un servidor web llamado "alexwp.org" tal y como vimos en un .