
Implementar una PKI en Linux permite crear una infraestructura propia de confianza para emitir, administrar, renovar y revocar certificados digitales. Es una base esencial para proteger servicios internos, habilitar TLS, autenticar servidores, validar usuarios, cifrar comunicaciones y aplicar autenticación mutua entre aplicaciones.
Una PKI bien diseñada no consiste solo en generar certificados con OpenSSL. También requiere gobierno, separación de funciones, protección de claves privadas, políticas de emisión, inventario, renovación, revocación, respaldo y monitoreo.
Idea central: la PKI convierte la confianza en infraestructura. Si la CA raíz se protege bien, los certificados emitidos pueden servir para TLS, mTLS, VPN, servicios internos, APIs, correo, dispositivos, Kubernetes y autenticación empresarial.
¿Qué es una PKI?
PKI significa Public Key Infrastructure o infraestructura de clave pública. Es el conjunto de componentes que permite crear, firmar, distribuir, validar y revocar certificados digitales.
En una PKI participan varios elementos: una autoridad certificadora raíz, una o más autoridades intermedias, certificados finales, claves privadas, solicitudes CSR, políticas de certificación, listas de revocación y repositorios de confianza.
| Componente | Función |
|---|---|
| CA raíz | Máxima autoridad de confianza. Debe mantenerse offline y usarse solo para firmar CAs intermedias. |
| CA intermedia | Emite certificados finales para servidores, usuarios, aplicaciones o dispositivos. |
| Certificado final | Identifica un servidor, cliente, servicio o usuario. |
| Clave privada | Elemento secreto que debe protegerse. Si se filtra, la identidad queda comprometida. |
| CSR | Solicitud de firma de certificado generada por quien necesita un certificado. |
| CRL / OCSP | Mecanismos para verificar si un certificado fue revocado antes de vencer. |
Cuándo conviene crear una PKI interna
Una PKI privada es útil cuando una organización necesita certificados para servicios internos que no deben depender de una CA pública. Por ejemplo: paneles internos, APIs, servidores de bases de datos, Kubernetes, LDAP, VPN, mTLS entre microservicios o autenticación de dispositivos.
- Proteger sitios internos con HTTPS.
- Aplicar mTLS entre aplicaciones y APIs.
- Emitir certificados para VPN, Wi-Fi empresarial o dispositivos.
- Autenticar servicios en Kubernetes, contenedores o microservicios.
- Evitar certificados autofirmados dispersos y sin control.
- Centralizar emisión, renovación, revocación e inventario.
- Crear confianza interna sin exponer nombres privados a CAs públicas.
Importante: para sitios públicos en Internet, normalmente conviene usar una CA pública como Let’s Encrypt u otro proveedor confiable. Para servicios internos, una PKI privada bien administrada puede ser más segura y controlable.
Arquitectura recomendada: raíz offline e intermedia online
La arquitectura más recomendable para una PKI empresarial básica es de dos niveles:
| Nivel | Recomendación | Uso |
|---|---|---|
| CA raíz | Offline, protegida, con clave cifrada y uso muy limitado. | Firmar únicamente CAs intermedias y listas de revocación raíz. |
| CA intermedia | Online o semionline, con controles de acceso, auditoría y respaldo. | Emitir certificados finales para servidores, usuarios, clientes y servicios. |
Esta separación permite proteger la raíz. Si una CA intermedia se compromete, se puede revocar y reemplazar sin perder toda la confianza de la organización.
Paso 1: instalar OpenSSL y preparar el entorno
En Ubuntu, Debian o Linux Mint:
En Fedora, Rocky Linux, AlmaLinux o RHEL:
Crea una estructura segura para la CA raíz:
Paso 2: crear la clave privada de la CA raíz
La clave privada de la CA raíz es el activo más importante de la PKI. Debe estar cifrada, protegida y preferentemente fuera de línea.
No pierdas esta clave ni su contraseña. Si se pierde, no podrás firmar nuevas CAs intermedias. Si se filtra, toda la confianza de la PKI queda comprometida.
Paso 3: crear el certificado autofirmado de la CA raíz
Genera el certificado raíz. Este certificado será el ancla de confianza que luego instalarás en servidores, estaciones o navegadores internos.
Verifica el certificado:
Paso 4: crear una CA intermedia
La CA intermedia será la encargada de emitir certificados finales. Crea su estructura:
Genera la clave privada de la intermedia:
Crea la solicitud CSR de la intermedia:
Paso 5: firmar la CA intermedia con la CA raíz
Crea un archivo de extensiones para que el certificado intermedio sea reconocido como autoridad certificadora:
Firma la CSR de la intermedia usando la CA raíz:
Verifica la cadena:
Crea el archivo de cadena:
Paso 6: emitir un certificado TLS para un servidor
Ahora puedes emitir certificados para servicios internos. Ejemplo: app.interno.local.
Genera la clave privada del servidor:
Crea la CSR con SAN. En certificados TLS modernos, el nombre DNS debe estar en subjectAltName.
Crea extensiones para el certificado de servidor:
Firma el certificado con la CA intermedia:
Verifica el certificado emitido:
Paso 7: instalar el certificado en Nginx
Copia el certificado, la clave y la cadena al servidor web:
Configura Nginx:
Prueba y recarga Nginx:
Paso 8: instalar la CA raíz en clientes Linux
Para que los clientes confíen en los certificados internos, instala el certificado raíz en el almacén de confianza del sistema.
En Ubuntu, Debian y Linux Mint:
En Fedora, Rocky Linux, AlmaLinux o RHEL:
Paso 9: probar TLS desde un cliente
Usa OpenSSL para comprobar la conexión TLS, la cadena y el nombre del servidor:
También puedes probar con curl:
Paso 10: habilitar autenticación mutua con mTLS
En TLS tradicional, el cliente valida el certificado del servidor. En mTLS, el servidor también exige un certificado al cliente. Esto es muy útil para APIs internas, microservicios, VPN, paneles administrativos y servicios de alta criticidad.
Ejemplo básico en Nginx:
El cliente debe presentar su certificado y clave:
Automatización moderna con step-ca
OpenSSL es excelente para entender cómo funciona una PKI, pero en producción es recomendable automatizar emisión y renovación. Una alternativa open source es step-ca, que permite desplegar una CA privada X.509 y un servidor ACME interno.
Con step-ca, una empresa puede emitir certificados internos usando clientes ACME, facilitar renovaciones y reducir el trabajo manual.
Cuándo usar step-ca: si necesitas emitir certificados para muchos servidores, automatizar renovaciones, usar ACME interno, aplicar mTLS o crear una PKI privada más operativa que una CA manual con OpenSSL.
Ejemplo conceptual de inicialización:
En una implementación real, step-ca debe ejecutarse como servicio, con permisos restringidos, respaldo seguro, configuración revisada y políticas de emisión claras.
Revocación: qué hacer cuando un certificado ya no debe ser válido
La revocación es esencial cuando una clave privada se filtra, un usuario deja la organización, un servidor se retira o un certificado fue emitido por error.
Con OpenSSL, puedes generar una CRL de ejemplo:
Consejo práctico: si vas a operar PKI en producción, define desde el inicio cómo publicarás CRL u OCSP. Sin revocación operativa, la PKI queda incompleta.
Políticas recomendadas para una PKI empresarial
| Política | Recomendación |
|---|---|
| CA raíz | Mantener offline, con clave cifrada, respaldo seguro y uso limitado. |
| CA intermedia | Usar para emitir certificados finales, con auditoría y control de acceso. |
| Certificados TLS | Usar SAN, EKU serverAuth, expiración limitada y renovación automatizada. |
| Certificados cliente | Usar EKU clientAuth, identidad clara y revocación inmediata al retiro. |
| Inventario | Registrar propietario, servicio, vencimiento, uso, huella y estado de revocación. |
| Respaldo | Respaldar claves CA, certificados, CRL, configuración y base de datos de emisión. |
Errores frecuentes al implementar PKI
- Usar la CA raíz directamente para emitir certificados de servidores.
- Guardar la clave raíz en un servidor conectado a Internet.
- No cifrar claves privadas de CA.
- Emitir certificados sin SAN.
- Crear certificados demasiado largos para servicios comunes.
- No tener inventario de certificados emitidos.
- No definir revocación ni renovación.
- Instalar la CA raíz en equipos sin control.
- Usar el mismo certificado para servidor y cliente sin EKU adecuado.
- No monitorear fechas de vencimiento.
Checklist final de implementación
- Definir alcance de la PKI: TLS, mTLS, VPN, usuarios, dispositivos o servicios.
- Crear CA raíz offline y CA intermedia emisora.
- Proteger claves privadas con cifrado y permisos restrictivos.
- Definir políticas de emisión, renovación y revocación.
- Usar SAN, keyUsage y extendedKeyUsage correctos.
- Instalar la CA raíz solo en equipos autorizados.
- Configurar TLS 1.2 y TLS 1.3 en servicios internos.
- Automatizar emisión y renovación cuando el volumen lo justifique.
- Registrar todos los certificados en un inventario.
- Probar recuperación, revocación y renovación antes de producción.
Preguntas clave
¿Una PKI interna reemplaza a Let’s Encrypt?
No necesariamente. Let’s Encrypt y otras CAs públicas son ideales para servicios públicos en Internet. Una PKI interna es mejor para servicios privados, mTLS, usuarios, dispositivos y redes internas.
¿Por qué no debo usar solo certificados autofirmados?
Porque son difíciles de administrar a escala, no tienen cadena de confianza clara y suelen generar excepciones inseguras en navegadores o clientes.
¿Qué es mTLS?
Es autenticación mutua con certificados. El cliente valida al servidor y el servidor valida al cliente.
¿Qué es SAN?
Subject Alternative Name es la extensión donde se declaran los nombres DNS o direcciones IP para los que un certificado es válido.
¿Qué herramienta conviene: OpenSSL o step-ca?
OpenSSL es excelente para aprendizaje, laboratorios y operaciones manuales. step-ca es más conveniente cuando necesitas automatización, ACME interno, renovación y operación continua.
¿Qué pasa si se compromete la CA raíz?
Es uno de los peores escenarios. Se debe retirar la confianza, crear una nueva PKI, reemplazar certificados y tratar el evento como incidente crítico.
Recomendamos
- Las 25 herramientas de ciberseguridad open source más utilizadas por administradores y analistas
- Ciberseguridad en Linux: 50 herramientas gratuitas para proteger servidores y estaciones
- Comandos básicos para administrar un servidor Linux
- Guía definitiva para construir un entorno DevSecOps con herramientas de código abierto
En resumen
Implementar una PKI en Linux permite pasar de certificados improvisados a una arquitectura formal de confianza digital. La combinación de CA raíz offline, CA intermedia emisora, certificados TLS, mTLS, inventario, revocación y automatización crea una base sólida para proteger servicios internos y comunicaciones empresariales.
OpenSSL permite entender y construir la base manual de la PKI. step-ca ayuda a llevar esa base hacia una operación moderna, automatizada y escalable. La diferencia entre una PKI útil y una PKI peligrosa está en el gobierno: proteger claves, definir políticas, controlar emisión, revocar a tiempo y auditar todo el ciclo de vida.
Conclusión editorial
Una PKI no debe tratarse como un simple generador de certificados. Es una infraestructura crítica de identidad, confianza y seguridad. Bien implementada, permite TLS interno, mTLS, autenticación fuerte y control centralizado. Mal implementada, puede convertirse en una fuente de riesgo. La clave está en diseñarla con separación, automatización y disciplina operativa desde el primer día.

