Parte: 2 — Criptografía aplicada · Fuente: Real-World Cryptography (Wong) e IETF RFC 5280 ⏱️ Duración estimada: 120 min · Nivel: Avanzado
Comprender cómo se resuelve el problema de "¿de quién es esta clave pública?" mediante la infraestructura de clave pública (PKI): certificados X.509, autoridades de certificación (CA), cadenas de confianza, y mecanismos de revocación (CRL, OCSP). El alumno construirá su propia CA de laboratorio con OpenSSL, emitirá certificados y comprenderá cómo el navegador valida una cadena hasta una raíz de confianza.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Problema de confianza en claves | Motiva la PKI |
| 2 | Certificado X.509 | Vincula identidad y clave |
| 3 | CA y cadena de confianza | Delegación de confianza |
| 4 | CSR y emisión | Cómo se pide un certificado |
| 5 | Revocación (CRL/OCSP) | Invalidar antes de expirar |
| 6 | Certificate Transparency | Detectar misemisión |
| 7 | Let's Encrypt / ACME | PKI moderna automatizada |
openssl version
Toda la PKI es de laboratorio: son certificados propios que no serán confiados por navegadores reales, y así debe ser.
bash
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out ca.key
openssl req -x509 -new -key ca.key -sha256 -days 3650 \
-subj "/CN=Lab Root CA" -out ca.crt
bash
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out srv.key
openssl req -new -key srv.key -subj "/CN=lab.local" -out srv.csr
bash
openssl x509 -req -in srv.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-days 365 -sha256 -extfile <(printf "subjectAltName=DNS:lab.local") -out srv.crt
bash
openssl x509 -in srv.crt -text -noout | head -n 20
openssl verify -CAfile ca.crt srv.crt
openssl x509 -text).Construye una PKI de dos niveles (raíz + intermedia) y emite un certificado de servidor firmado por la intermedia; configura un servidor TLS de laboratorio que presente la cadena completa. Criterio de aceptación: openssl verify -CAfile ca.crt -untrusted intermedia.crt srv.crt devuelve OK y un cliente valida la cadena hasta la raíz.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
unable to get local issuer certificate |
Falta la intermedia; incluye la cadena completa |
| Navegador rechaza el certificado | CN sin SAN; los navegadores exigen SAN |
certificate has expired |
Validez vencida; reemite |
| Confiar en la raíz de laboratorio en producción | Nunca; usa CAs públicas reales |
| No revocar tras compromiso de clave | Publica CRL/OCSP y reemite |
❓ ¿Por qué hay CAs intermedias? Para proteger la raíz (offline) y limitar el daño si se compromete una intermedia, que puede revocarse.
❓ ¿Cómo confía mi navegador en un sitio? Valida la cadena de firmas hasta una raíz de su almacén de confianza, comprueba validez, SAN y revocación.
❓ ¿Qué es el certificate pinning? Fijar una clave/certificado esperado en la app para no depender solo de la PKI; reduce el riesgo de CA comprometida.