En primer lugar, me gustaría explicar a muy alto nivel de que estamos hablando cuando nos referimos al termino PKI.
¿ Qué es una PKI
Hoy en día, las organizaciones confían en una infraestructura de clave publica para gestionar la seguridad mediante el cifrado. Específicamente, la forma más común de cifrado utilizada hoy en día implica una clave pública valga la redundancia, que cualquiera puede usar para cifrar un mensaje, y una clave privada (también conocida como clave secreta), que solo una persona debería poder usar para descifrar esos mensajes. Estas claves pueden ser utilizadas por personas, dispositivos y aplicaciones.
La seguridad PKI surgió por primera vez en la década de 1990 para ayudar a controlar las claves de cifrado mediante la emisión y gestión de certificados digitales. Estos certificados PKI verifican el propietario de una clave privada y la autenticidad de esa relación a futuro para ayudar a mantener la seguridad. Podríamos decir que estos certificados son como un DNI para el mundo digital.
Ejemplos comunes de seguridad PKI en la actualidad son los certificados SSL en sitios web para que los visitantes del sitio sepan que están enviando información al destinatario previsto , las firmas digitales y la autenticación para dispositivos de Internet de las cosas.
no voy a extenderme mucho más en este artículo acerca del funcionamiento de una pki y de sus componentes ya que no es el objetivo del mismo pero si me gustaría mencionar algunas alternativas interesantes a la PKI que desde hace años implantan la mayoría de las empresas, que no es otra que la PKI de Microsoft. Aquí de nuevo podría extenderme hablando sobre como está infraestructura de certificados expande de manera considerable la superficie de ataque de nuestro Directorio Activo, pero ese tema lo dejaremos para otro momento en el que hablaré sobre las sus diferentes vulnerabilidades y como pueden comprometer todo nuestro entorno de AD.
Pero vayamos al meollo de la cuestión, ¿Que alternativas tenemos y que además sean de código abierto?
1 CE EJBCA
EJBCA es una solución PKI basada en Java que ofrece ediciones empresariales y community. EJBCA Community Edition (CE) se puede descargar gratis y tiene todas las funciones principales necesarias para la emisión y gestión de certificados. Incluye múltiples métodos de inscripción de certificados, así como una API REST. EJBCA fue desarrollado por PrimeKey, ahora parte de Keyfactor, y es la solución más confiable y adoptada para PKI CA de código abierto en la actualidad.
Las capacidades principales incluyen:
- Emisión de certificados X.509 y SSH y gestión del ciclo de vida
- Autoridad de certificación (CA), autoridad de registro (RA) y funcionalidad OCSP
- Extensibilidad a través de CMP, SCEP y REST API
- Registro de auditoría en archivo o base de datos
- Soporte básico de HSM usando Java PKCS#11
EJBCA Enterprise Edition (EE) incluye funciones para entornos productivos, que incluyen alta disponibilidad, agrupación en clústeres, autenticación, protocolo avanzado y soporte HSM, soporte y servicios profesionales y flexibilidad de implementación. EJBCA Enterprise se puede implementar como un dispositivo de hardware llave en mano, un dispositivo de software, una PKI basada en la nube o entregada por SaaS.
2 DCS
Dogtag Certificate System (también conocido como Dogtag PKI) es una autoridad de certificación (CA) de código abierto que admite muchos casos de uso comunes de PKI. Ofrece una interfaz de administración basada en web que le permite controlar sus certificados y al mismo tiempo admite múltiples formatos para que puedan adaptarse fácilmente a diferentes casos de uso.
Las capacidades principales incluyen:
- Emisión de certificados X.509 y gestión de certificados
- Generación y publicación de CRL
- Autoridad de registro local (LRA) para autenticación y políticas
- Extensibilidad a través de ACME, SCEP y REST API
- No admite bases de datos relacionales; requiere LDAP
3 OPEN XPKI
OpenXPKI
OpenXPKI es un conjunto de herramientas basado en OpenSSL y Perl que puede crear, administrar e implementar certificados digitales. Incluye soporte para múltiples formatos de certificados y una interfaz en línea para ayudarlo a supervisar sus cargas de trabajo de PKI.
Las capacidades principales incluyen:
- Emisión de certificados X.509 y gestión de certificados
- GUI basada en web compatible con todos los principales navegadores
- Extensibilidad vía SCEP y EST
4 Step-CA
Step-ca es una herramienta PKI de código abierto basada en CLI simple pero flexible que puede crear y administrar certificados digitales. De manera similar, incluye soporte para múltiples formatos de certificados y se integra con herramientas como Kubernetes, Nebula y Envoy.
Las capacidades principales incluyen:
- Emisión y gestión de certificados X.509 y SSH
- Interfaz basada en CLI para certificado
- Extensibilidad mediante protocolo ACME y SCEP
- Requiere experiencia técnica en conceptos PKI y JSON
Ademas de estas 4 alternativas existe una quinta que particularmente me gusta bastante, aunque eso sí, es de pago. Se trata de la opción de desplegar una CA en el vault de Hashicorp. En el siguiente enlace tenéis los pasos necesarios para realizar el despliegue.
Creating a Certificate Authority With Hashicorp Vault and Terraform | by Steve Dillon | Medium