TLS sin magia: certificado, SNI, cadena y expiración
Qué mira tu cliente cuando valida HTTPS: nombre del sitio, certificado, cadena de confianza, fechas y errores comunes.
Antes de empezar necesitás
- Haber hecho el lab de una request no es magia
- Tener curl y openssl disponibles
Al terminar vas a poder
- Leer issuer, subject, SAN y fechas de un certificado
- Entender por qué SNI importa en hosts compartidos
- Distinguir certificado vencido, nombre incorrecto y CA no confiable
- Dejar evidencia sin capturar secretos
Entorno listo con Podman
Una CA de juguete y cuatro servidores TLS locales, uno por cada error común del lab: SNI, vencido, nombre incorrecto y autofirmado. lab-check revisa tu validación con curl y tu diagnóstico de cada puerto.
# Una vez: cloná el repo y construí la imagen
git clone https://github.com/ValentinTorassa/Open-Security-Labs.git
cd Open-Security-Labs
podman build -t osl/tls-sin-magia -f entornos/redes-internet/tls-sin-magia/Containerfile entornos
# Abrí el entorno (se borra al salir)
podman run --rm -it --name osl-tls-sin-magia --hostname labs osl/tls-sin-magia
# Al terminar, adentro del contenedor
lab-checklab-checkrevisa lo que hiciste y guarda el resultado en/home/vt/evidencia. Desde otra terminal, en la carpeta del repo,npm run lab:check -- redes-internet/tls-sin-magiacorre el mismo chequeo y copia tu evidencia aevidencia/tls-sin-magia/.- ¿Usás Docker? Cambiá podman por docker en los comandos y funciona igual.
- Qué trae, qué revisa y sus límites: entornos/redes-internet/tls-sin-magia/README.md.
HTTPS no significa “seguro” por magia. Significa que el cliente pudo negociar TLS y validar un certificado para el nombre que quería visitar. Si entendés esa validación, los errores dejan de ser misteriosos.
Mirá el certificado
openssl s_client abre la conexión TLS y te muestra la cadena. -servername manda SNI: el nombre que el cliente quiere validar.
openssl s_client -servername example.com -connect example.com:443 </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -datesCampos clave:
subject para quién fue emitido
issuer quién lo emitió
notBefore desde cuándo vale
notAfter hasta cuándo vale
SAN nombres válidos del certificado
Curl como diagnóstico rápido
curl -Iv https://example.comBuscá líneas de TLS, issuer y expire date. Si falla, no saltes directo a -k: primero entendé qué validación falló.
Errores comunes
certificado vencido fecha actual > notAfter
nombre incorrecto dominio no aparece en SAN
CA no confiable cadena no llega a una raíz confiable
SNI ausente o incorrecto el servidor entrega otro certificado
Lo que practicás en este lab
Llevátelo a tu repo si querés, pero no es obligatorio: es tu aprendizaje.
- Salida de openssl s_client redactada a los campos importantes
- Tabla con subject, issuer, SAN y expiración
- Writeup: qué error esperarías si el nombre no coincide
Reto
Elegí un dominio público, inspeccioná su certificado y escribí qué nombre valida el navegador, quién lo emitió y cuándo vence.
Resolvelo y escribí dos líneas explicando qué pasó. Con eso lo fijás.