# OpenXPKI

El proyecto OpenXPKI es un proyecto que busca crear un software de clase empresarial PKI de código abierto. Algunos de los objetivos es la modularidad y flexibilidad.

## Diseño

OpenXPKI is mayormente escrito en Perl. El software está separado en un servidor y varias implementaciones cliente que se comunican con el servidor mediante Sockets Unix. Entre las implementaciones cliente se encuentra una basada en web.
El servidor consiste mayormente en un conjunto de herramientas que provee las funciones principales de criptografía, y un motor de flujo de trabajo que permite definir flujos de trabajo implementando los procesos PKI.

## Características clave
### Múltiples instancias CA

OpenXPKI soporta la configuración de múltiples PKI lógicos o "Reinos PKI" ("PKI Realms") independientes en una sola instancia. Esto permite la configuración de un Certificado raíz y otros certificados subordinados en una sola instalación.

### Cambio de CA totalmente automatizado

Junto con cada PKI lógico, OpenXPKI provee la posibilidad de configurar múltiples entregas de CAs con superposición de validez. Una vez que una nueva entrega de CA se vuelve válida, automáticamente toma la entrega de nuevos certificados. Esta característica permite la automatización total de cambios de CA, donde los administradores no necesitan reconfigurar la instalación PKI si algún certificado está por expirar.

### Motor de flujo de trabajo

OpenXPKI utiliza un motor de flujo de trabajo que permite modificar y extender las operaciones básicas del PKI (como la solicitud y aprobación de certificados). La personalización del comportamiento del sistema se realiza modificando la descripción del flujo de trabajo en formato XML.
Adicionalmente, el motor de flujo de trabajo permite extender el sistema mediante flujos de trabajo personalizados. OpenXPKI incluye algunos flujos de trabajo estándar, como la solicitud de certificados X.509, y entregando listas de revocación de certificados que pueden ser fácilmente adaptadas al proceso PKI. Al agregar nuevas definiciones de flujos de trabajo, es posible extender el sistema PKI.

### Infraestructura de protección de clave

Para proteger las claves privadas de una autoridad de certificación y sus subsistemas, OpenXPKI soporta el compartido secreto mediante el algoritmo de Shamir.
Se puede lograr un nivel de seguridad más alto al proteger las claves privadas mediante un Módulo de Seguridad Hardware. OpenXPKI soporta el módulo nShield de nCipher.

### Integración con sistema de seguimiento

OpenXPKI tiene integrado un sistema de seguimiento, el cual permite crear y enlazar tickets automáticamente en el sistema de seguimiento, el que permite a las autoridades de certificación hacer seguimiento de las solicitudes de certificados.

### Internationalization

OpenXPKI ofrece soporte completo de internacionalización de todos sus componentes..

### Cifrado alternativo

Es posible extender el motor criptograma a sistemas no-occidentales, como, por ejemplo, los estándares nacionales rusos.

## Requisitos del sistema

OpenXPKI corre en la mayoría de los sistemas operativos Unix-like, como FreeBSD, Linux, Solaris/OpenSolaris y macOS). Debe existir un motor de base de datos para MySQL, PostgreSQL, Oracle Database e IBM DB2.