Fundamentos de Criptografía

Certificados
SSL / TLS

Una guía completa sobre seguridad web, encriptación de datos y configuración de certificados en servidores.

✦ Yasmel Perdomo  ·  Matrícula: 20250706

🔒
Explorar
Conceptos base

¿Qué son los certificados de seguridad?

Los certificados SSL/TLS son la columna vertebral de la seguridad en Internet. Garantizan que la información que viaja entre tu navegador y un servidor esté cifrada, autenticada y protegida de terceros malintencionados.

🛡️

SSL — Secure Socket Layer

SSL es un protocolo de seguridad diseñado para garantizar el intercambio seguro de datos entre una página web y sus visitantes mediante la encriptación. Desde que introduces una URL en tu navegador, el famoso candado 🔒 en la barra de direcciones indica que SSL está activo.

Fue desarrollado por Netscape en los años 90 y fue el estándar durante muchos años. Actualmente se considera obsoleto y ha sido reemplazado por TLS, aunque el nombre "SSL" persiste popularmente.

TLS — Transport Layer Security

TLS es la evolución directa de SSL. Garantiza el intercambio de datos en un entorno seguro y privado entre dos partes —usuario y servidor— a través de protocolos como HTTP, POP3, IMAP, SSH, SMTP y NNTP.

Funciona de manera muy similar a SSL pero con algoritmos de cifrado más modernos y robustos. La versión actual recomendada es TLS 1.3, que ofrece mayor velocidad y seguridad que sus predecesoras.

Comparativa

SSL vs TLS

Aunque a menudo se usan indistintamente, existen diferencias técnicas importantes entre ambos protocolos.

Característica 🔐 SSL ✨ TLS
VersionesSSL 2.0, 3.0TLS 1.0, 1.1, 1.2, 1.3
Estado actualObsoleto / DeprecatedEstándar activo
SeguridadVulnerable (POODLE, BEAST)Robusta y actualizada
HandshakeMás lento, menos eficienteOptimizado (1-RTT en TLS 1.3)
Cifrado simétricoRC4, DESAES-GCM, ChaCha20
Autenticación mensajesMD5 / SHA-1SHA-256, SHA-384
Soporte navegadoresEliminadoUniversal
Recomendado para uso❌ No✅ Sí (TLS 1.2+)
Guía paso a paso

How To: Configurar un Certificado SSL/TLS

A continuación se describe el proceso completo para instalar y configurar un certificado SSL/TLS en un servidor web con dominio personalizado.

1

☁️ Instalar un servidor web en la nube

Crea una instancia en alguna plataforma cloud. Las recomendadas son AWS EC2, Microsoft Azure u Oracle Cloud Free Tier. Elige un sistema operativo (Ubuntu/CentOS recomendado para Linux) y asegúrate de que el puerto 80 (HTTP) y 443 (HTTPS) estén abiertos en el firewall.

Una vez creada, anota la dirección IP pública del servidor, la necesitarás en el siguiente paso.

2

🌐 Instalar el servicio web (Apache / IIS)

En Linux (Apache):

# Actualizar e instalar Apache
sudo apt update && sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2

# Verificar que Apache está corriendo
sudo systemctl status apache2

En Windows (IIS): Ve a "Agregar roles y características" en el Administrador del Servidor e instala Internet Information Services (IIS).

3

🌍 Vincular un subdominio a tu IP pública

Registra un subdominio gratuito en no-ip.com. El subdominio debe tener tu matrícula estudiantil, ejemplo: 20250706.ddns.net. Apunta ese dominio a la IP pública de tu servidor.

# Verificar que el dominio resuelve correctamente
ping 20250706.ddns.net
nslookup 20250706.ddns.net
4

📄 Generar el CSR (Certificate Signing Request)

El CSR es un archivo que contiene tu información y tu clave pública. Se envía a la Autoridad Certificadora (CA) para que emita tu certificado.

# Generar clave privada y CSR en Linux
openssl req -new -newkey rsa:2048 -nodes \
  -keyout 20250706.ddns.net.key \
  -out 20250706.ddns.net.csr

# Completar los datos: CN=20250706.ddns.net
5

🏅 Emitir el certificado (Let's Encrypt recomendado)

Puedes usar Let's Encrypt de forma gratuita con Certbot, o una CA de pago como Comodo. Let's Encrypt es la opción más sencilla para dominios DDNS.

# Instalar Certbot para Apache en Ubuntu
sudo apt install certbot python3-certbot-apache -y

# Emitir y configurar el certificado automáticamente
sudo certbot --apache -d 20250706.ddns.net

# Renovación automática
sudo certbot renew --dry-run
6

⚙️ Instalar el certificado en el servidor

Si usaste Certbot, la instalación es automática. En caso de certificado manual, debes configurar los archivos en Apache o IIS:

# Editar VirtualHost en Apache
sudo nano /etc/apache2/sites-available/20250706.conf

<VirtualHost *:443>
  ServerName 20250706.ddns.net
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/cert.pem
  SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>

# Activar SSL y reiniciar
sudo a2enmod ssl
sudo systemctl restart apache2
7

✅ Verificar el certificado instalado

Abre tu navegador y visita https://20250706.ddns.net. Deberías ver el candado verde 🔒 en la barra de direcciones. Puedes verificar los detalles del certificado haciendo clic en el candado.

# Verificar desde consola
openssl s_client -connect 20250706.ddns.net:443

# O verificar con curl
curl -vI https://20250706.ddns.net 2>&1 | grep "SSL"
Fundamentos

Fundamentos de Criptografía

Los certificados SSL/TLS se apoyan en tres pilares criptográficos fundamentales que garantizan la seguridad de las comunicaciones.

🔑

Cifrado Asimétrico

Utiliza un par de claves: pública y privada. Lo que cifra una, solo lo descifra la otra. Usado en el intercambio inicial (handshake). Ej: RSA, ECDSA.

Cifrado Simétrico

Una sola clave secreta compartida cifra y descifra los datos. Es mucho más rápido que el asimétrico. Usado en la transferencia de datos. Ej: AES-256, ChaCha20.

🏛️

PKI & Autoridades Cert.

La Infraestructura de Clave Pública (PKI) gestiona la confianza. Las CAs (Let's Encrypt, DigiCert, Comodo) firman los certificados para validar la identidad del servidor.

🔏

Funciones Hash

Garantizan la integridad de los datos. Convierten cualquier dato en un valor de longitud fija. Ej: SHA-256, SHA-384. No son reversibles.

🤝

TLS Handshake

Proceso de negociación al inicio de cada conexión segura. Se acuerdan algoritmos, se intercambian claves y se autentican las partes antes de transferir datos.

📜

Cadena de Confianza

Los certificados forman una cadena: Raíz → Intermedia → Final. El navegador verifica cada eslabón hasta llegar a una CA raíz de confianza instalada en el SO.

Proceso

El TLS Handshake

Este es el proceso que ocurre en milisegundos cada vez que accedes a un sitio HTTPS.

💻
Client Hello

El cliente envía los protocolos TLS soportados, una lista de cifrados aceptados y un número aleatorio (nonce).

🖥️
Server Hello

El servidor elige el protocolo y cifrado a usar, envía su certificado SSL/TLS y su propio nonce.

🔍
Verificación del Certificado

El cliente verifica que el certificado sea válido, no haya expirado y esté firmado por una CA de confianza.

🔑
Intercambio de Clave

Se genera una "pre-master secret" cifrada con la clave pública del servidor. Ambas partes derivan la misma clave de sesión.

Finished — Conexión Segura

Ambas partes confirman con un mensaje "Finished" cifrado. A partir de ahora toda la comunicación va cifrada con la clave de sesión.

Clasificación

Tipos de Certificados SSL/TLS

Los certificados se clasifican por el nivel de validación que ofrece la Autoridad Certificadora.

DV

Domain Validation

Solo verifica que controlas el dominio. Emisión en minutos. Ideal para blogs y sitios personales. Ej: Let's Encrypt.

OV

Organization Validation

Verifica el dominio y la organización. Emisión en 1-3 días. Recomendado para empresas y comercios.

EV

Extended Validation

Validación exhaustiva de la empresa. El navegador muestra el nombre de la organización. Máxima confianza para bancos y e-commerce.

Wildcard SSL

Cubre el dominio principal y todos sus subdominios (*.dominio.com). Muy útil cuando se tienen múltiples subdominios.

Configuración

Práctica: Dominio personalizado

Configuración de certificado SSL/TLS para dominio con matrícula estudiantil.

🔒
https://20250706.ddns.net
Certificado Válido — Let's Encrypt
01
Servidor Cloud

AWS EC2, Azure VM u Oracle Cloud Free Tier con Ubuntu Server 22.04 LTS.

02
Apache Web Server

Instalación y configuración del servicio web Apache2 en Linux.

03
Subdominio DDNS

Registro en no-ip.com y vinculación del dominio 20250706.ddns.net a la IP pública.

04
Generación CSR

Creación de clave privada RSA-2048 y archivo CSR con OpenSSL.

05
Emisión con Certbot

Obtención del certificado gratuito de Let's Encrypt con renovación automática.

06
Instalación & Validación

Configuración del VirtualHost HTTPS y verificación del candado en el navegador.