ssl

Contenido

馃攼 驴Qu茅 es SSL? 馃攼

SSL (Secure Sockets Layer) es un protocolo de seguridad que se utiliza para establecer una conexi贸n cifrada y segura entre un servidor y un cliente (generalmente un navegador web). Aunque SSL ha sido reemplazado por TLS (Transport Layer Security) en la mayor铆a de los casos, el t茅rmino 芦SSL禄 sigue siendo ampliamente utilizado para referirse a esta tecnolog铆a de cifrado en general.

Caracter铆sticas principales de SSL/TLS

  1. Cifrado: SSL cifra los datos que se transmiten entre el servidor y el cliente, lo que garantiza que los datos no puedan ser le铆dos por terceros durante la transmisi贸n. Esto es esencial para proteger informaci贸n confidencial, como contrase帽as, datos bancarios, y cualquier otro tipo de informaci贸n sensible.

  2. Autenticaci贸n: SSL utiliza certificados digitales para autenticar la identidad de los servidores. Esto asegura que el cliente se est谩 conectando al servidor leg铆timo y no a un servidor falso (ataque de 芦man-in-the-middle禄).

  3. Integridad de los datos: SSL asegura que los datos no se alteren durante el proceso de transmisi贸n, utilizando funciones de hash y algoritmos de verificaci贸n de integridad.

  4. Confianza: Para que un servidor obtenga un certificado SSL v谩lido, debe ser verificado por una Autoridad de Certificaci贸n (CA) confiable. Esto proporciona confianza a los usuarios de que la conexi贸n es segura y leg铆tima.

驴C贸mo funciona SSL?

Cuando un cliente (como un navegador) se conecta a un servidor usando SSL, el proceso generalmente sigue estos pasos:

  1. Handshake (Apertura de la sesi贸n SSL):
    • El cliente y el servidor se 芦saludan禄 y negocian un conjunto de algoritmos de cifrado.
    • El servidor env铆a su certificado SSL, que contiene una clave p煤blica y la informaci贸n de la CA que lo emiti贸.
  2. Intercambio de claves:
    • El cliente utiliza la clave p煤blica del servidor para cifrar una clave secreta (clave de sesi贸n) que solo el servidor puede descifrar usando su clave privada.
  3. Cifrado de la comunicaci贸n:
    • A partir de ese momento, se usa la clave de sesi贸n para cifrar la comunicaci贸n entre el servidor y el cliente, asegurando que los datos intercambiados no sean interceptados ni alterados.
ssl

SSL/TLS se utiliza principalmente para asegurar las conexiones en Internet, y es especialmente importante para sitios web que gestionan informaci贸n sensible, como:

  • Bancos y servicios financieros en l铆nea.
  • Tiendas de comercio electr贸nico.
  • Plataformas de login y redes sociales.
  • Servicios de correo electr贸nico seguro.

Hoy en d铆a, el protocolo SSL es esencialmente reemplazado por TLS, aunque el t茅rmino 芦SSL禄 todav铆a se utiliza de manera gen茅rica para referirse a las conexiones seguras.

馃 OpenSSL 馃

OpenSSL es un robusto paquete de herramientas de administraci贸n y bibliotecas relacionadas con la criptograf铆a, suministran funciones聽 criptogr谩ficas por ejemplo a OpenSSH y a HTTP para acceso seguro (HTTP+SSL=HTTPS). Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL). OpenSSL tambi茅n permite crear certificados digitales que pueden aplicarse a un servidor, por ejemplo Apache. Proporciona una biblioteca y una utilidad de l铆nea de comandos que permiten trabajar con:

馃敼Cifrado y descifrado.
馃敼Generaci贸n y administraci贸n de certificados digitales.
馃敼Generaci贸n de claves criptogr谩ficas.
馃敼Establecimiento de conexiones seguras usando SSL/TLS

驴C贸mo se relacionan SSL y OpenSSL?

La relaci贸n es directa, SSL/TLS es la tecnolog铆a o el protocolo, mientras que OpenSSL es una implementaci贸n de esa tecnolog铆a. OpenSSL permite a los desarrolladores y administradores de sistemas utilizar SSL/TLS para proteger sus aplicaciones y servidores.

C贸mo instalar OpenSSL:

				
					sudo apt install openssl
				
			

ssl

Las funciones m谩s comunes del comando OpenSSL son las de generar una clave privada, crear un CSR y establecer una conexi贸n segura a un servidor.

Generar una clave privada

				
					openssl genpkey -algorithm RSA -out private.key

				
			

C贸mo crear un CSR

Cuando una organizaci贸n quiere solicitar un certificado a una Autoridad de Certificaci贸n
(CA) necesita enviar una petici贸n de firma de certificado (CSR = certificate-signing
request). El CSR contiene la clave p煤blica, el common name (www.ejemplo.com)
identificador 煤nico de un sitio y la informaci贸n local que identifica a la organizaci贸n
solicitante. La sintaxis b谩sica para crear un CSR

				
					openssl req -new -key private.key -out request.csr

				
			

Establecer una conexi贸n segura a un servidor

				
					openssl s_client -connect example.com:443

				
			

Ejemplo de creaci贸n de un fichero CSR

Generamos el fichero CSR a partir de openssl desde la l铆nea de comandos, para ello especificamos que formato queremos, el nombre del fichero csr de salida y la clave privada.

				
					openssl req -new -outform PEM -keyform PEM -keyout secret.key -out cert.csr -newkey rsa:1024
				
			

馃敻openssl req: Llama a la utilidad req de OpenSSL, que se utiliza para generar una solicitud de firma de certificado (CSR) y para gestionar claves.

馃敻-new: Indica que est谩s creando una nueva solicitud de firma de certificado (CSR).

馃敻-outform PEM: Especifica el formato de salida del archivo CSR como PEM (Privacy-Enhanced Mail). Este es un formato com煤nmente utilizado para certificados y claves en texto plano.

馃敻-keyform PEM: Especifica que el archivo de clave privada que se va a generar tambi茅n estar谩 en formato PEM.

馃敻-keyout secret.key: Indica el nombre del archivo donde se almacenar谩 la nueva clave privada generada. En este caso, el archivo se llamar谩 secret.key.

馃敻-out cert.csr: Especifica el archivo de salida para el CSR generado. El archivo de solicitud de firma de certificado ser谩 cert.csr.

馃敻-newkey rsa:1024: Especifica que se debe generar una nueva clave privada RSA con un tama帽o de 1024 bits.

Para ver el contenido del fichero csr, debemos usar el siguiente comando:

				
					openssl req -in cert.csr -text
				
			

Una vez que se ha verificado el CSR ya se puede subir o enviar a la CA favorita. La CA usar谩 el
contenido del fichero .csr junto con su clave privada para generar nuestro certificado digital.

Laboratorios:

Puedes poner en pr谩ctica el funcionamiento del protocolo de seguridad SSH en laboratorios gratuitos como los de Over The Wire, donde tendr谩s que conectarte mediante SSH para poder realizar los laboratorios.

馃摎 P谩gina oficial de OverTheWire: https://overthewire.org/wargames/

馃摎 Resoluci贸n de ejercicios del laboratorio Bandit de OverTheWire: https://territoriohacker.com/overthewire-bandit-1/

Otras formas de practicar es crear tus propios certificados y acceder a tu sistema desde otros dispositivos en una red local.