# EJBCA

EJBCA ou Enterprise JavaBeans Certificate Authority est une solution logicielle de PKI – ou IGC, Infrastructure de gestion de clés – libre et gratuite, développée et distribuée par l’entreprise suédoise PrimeKey Solutions AB, devenue une filiale de Keyfactor Inc. Le projet EJBCA est développé selon les méthodes du logiciel libre et open source, et dont le code source est disponible selon les termes de la licence GNU Lesser General Public License (LGPL).
EJBCA permet la mise en œuvre d’une plate-forme d’IGC composée d’une autorité de certification (AC), d’une autorité d’enregistrement (AE) et d’une autorité de validation (en) (AV) privées ou publiques. Le logiciel EJBCA est basé sur la librairie CESeCore, qui s’appuie elle-même sur l’API (Interface de programmation) cryptographique Bouncy Castle (en).
EJBCA est utilisée par plusieurs gouvernements, notamment de l’Union européenne, pour leur sécurité interne, et l’émission de passeports électroniques et de cartes d’identité électroniques. Les entreprises privées utilisent également EJBCA, et sont intéressées par les nouvelles fonctionnalités (2023) telles que les algorithmes post-quantiques et la sécurisation de l’Internet des objets.

## Fonctionnalités

EJBCA fournit les principales fonctionnalités d’une infrastructure de gestion de clés, telles qu’une autorité de certification (AC), une autorité d’enregistrement (AE) et une autorité de validation (en) (AV). Ces fonctionnalités peuvent être déployées ensemble ou séparément, sous la forme de modules désignés par leur sigle anglophone : CA (pour les autorités de certification), RA (pour les autorités d’enregistrement) et VA (pour les autorités de validation).

### Fonctionnalités d’autorité de certification

La mise en œuvre d’un seul module CA (Certificate Authority) permet de gérer plusieurs autorités de certification qui peuvent être organisées de façon hiérarchique et sur plusieurs niveaux de subordination. Ainsi, il est possible de créer des AC racines (dont le certificat est auto-signé) et des AC subordonnées (dont le certificat est signé par une autre AC). EJBCA permet également de générer plusieurs types d’AC : X.509, CVC, SSH CA, ITS ECA (Enrollment Certification Authority), AC hybride.

### Fonctionnalités d’autorité d’enregistrement

Le module RA (Registration Authority) permet de mettre en œuvre les principales fonctionnalités d’une autorité d’enregistrement, c’est-à-dire la gestion des clés et la gestion des certificats. Ainsi, il est possible de créer des clés cryptographiques, de les renouveler, de les mettre en séquestre et de vérifier leur validité du point de vue cryptographique. Les certificats peuvent être émis en mode centralisé (dans ce cas, les clés sont générées par la PKI elle-même) ou en mode décentralisé (dans ce cas, les clés sont générées par le demandeur qui peut être une personne physique ou un client logiciel).

### Rôles et opérations

Une PKI EJBCA est gérée par des personnes pouvant avoir un des principaux types de rôle suivants : administrateur PKI, officier d’enregistrement, officier de révocation et auditeur. Un administrateur PKI configure les autorités de certification, les profils de certificats (i.e. gabarit technique d’un certificat), les services et les protocoles. Un officier d’enregistrement vérifie l’identité du futur titulaire du certificat, puis procède à son enregistrement. Un officier de révocation peut révoquer un certificat sur demande soit de l’abonné soit de l’autorité de certification. Un auditeur peut consulter tout le paramétrage de la PKI, ainsi que les journaux d’audit, en lecture seule. Des rôles personnalisés peuvent être définis selon un type de rôle choisi, selon des autorités de certification données et selon des profils de certificats donnés.

### Services et interfaces

Pour faciliter la gestion de la PKI et des certificats, EJBCA propose de nombreux services tels que : un service de génération de CRL (Certificate Revocation List), un service de validation de certificats selon le protocole OCSP (Online Certificate Status Protocol), un service de publication LDAP (pour publier les CRL et les certificats), un service de notification par courriel (afin par exemple d’avertir l’abonné de l’expiration proche d’un certificat dont il est titulaire ou responsable), un service de journalisation, etc. Le protocole OCSP est mis en œuvre dans le module VA (Validation Authority).
La PKI EJBCA peut être gérée et configurée selon plusieurs interfaces, dont voici les plus courantes : interface web, Web Service (SOAP, REST), protocole SCEP (Simple Certificate Enrollment Protocol), protocole ACME (Automated Certificate Management Environment) ou interface en ligne de commande (CLI).
Les interfaces web d’EJBCA existent en plusieurs langues : allemand, anglais, français, japonais, tchèque, vietnamien (pour l’interface d’administration) ; et allemand, anglais, suédois, vietnamien (pour l’interface de l’autorité d’enregistrement).

### Architectures et intégration

EJBCA supporte toutes les architectures PKI courantes, ainsi que la plupart des HSM (Hardware Security Module, module de sécurité matériel) du marché via l’API standard PKCS #11 (en).

## Caractéristiques
### Primitives cryptographiques
#### Algorithmes asymétriques

* PQC : ML-DSA (CRYSTALS-Dilithium (en)), ML-KEM (CRYSTALS-Kyber (en)), Falcon (en) (FN-DSA en cours de standardisation NIST pour 2025)
* ECC : plus de 50 courbes, dont les courbes du NIST (P-224, P-256, P-384, P-521), les courbes Brainpool, la courbe française FRP256v1, les courbes Curve25519 et Curve448 (en) (depuis EJBCA 7.4.0)
* RSA : 1024, 1536, 2048, 3072, 4096, 6144, 8192 bits
* Anciens algorithmes : DSA 1024 bits (supprimé depuis EJBCA 8.3.0)

#### Fonctions de hachage

* SHA-1
* SHA-2 : SHA-224, SHA-256, SHA-384, SHA-512
* SHA-3 : SHA3-256, SHA3-384, SHA3-512
* Anciens algorithmes : GOST (fonction de hachage) (en) GOST3411 (supprimé depuis EJBCA 9.1.1)

### Protocoles et standards

* Certificats X.509 v3 et liste de révocation de certificats (CRL en anglais) v2 (RFC 5280)
* Certificats CVC (Card Verifiable Certificate) pour les passeports électroniques (ICAO, Doc 9303 – Machine Readable Travel Documents (en) (MRTD))
* Certificats SSH (X.509v3 Certificates for Secure Shell Authentication, RFC 6187)
* Certificats qualifiés (ETSI eIDAS et RFC 3739)
* OCSP (Online Certificate Status Protocol, protocole de validation, RFC 6960)
* SCP (Secure Copy Protocol, protocole de copie sécurisée), pour publier les CRL et les certificats d’AC
* CMP (Certificate Management Protocol (en), protocole de gestion de certificats, RFC 4210)
* EST (Enrollment over Secure Transport (en), protocole d’enrôlement de certificats, RFC 7030)
* SCEP (Simple Certificate Enrollment Protocol, protocole d’enrôlement de certificats, Draft IETF)
* ACME (Automatic Certificate Management Environment, protocole d’enrôlement de certificats serveurs (comme Let’s Encrypt), RFC 8555)
* PKCS (Public Key Cryptographic Standards) : PKCS #1, PKCS #7, PKCS #9, PKCS #10, PKCS #11, PKCS #12
* CT Logs (Certificate Transparency (en), protocole de publication de certificats serveurs TLS, RFC 6962)
* CAA (DNS Certification Authority Authorization, type d’enregistrement de ressource DNS pour autoriser les AC, RFC 6844)
* CMS (Cryptographic Message Syntax (en), RFC 5652)
* CRMF (Certificate Request Message Format (de), RFC 4211)
* LDAP v3 (Lightweight Directory Access Protocol, RFC 4511)
* Protocole 3GPP (i.e. LTE/4G) pour les périphériques mobiles, via le protocole CMP (Certificate Management Protocol)
* PSD2 (Revised Payment Service Directive), conformité complète à la Directive sur les services de paiement 2 (DSP 2)
* C-ITS (Cooperative Intelligent Transport Systems), AE (autorité d’enrôlement) et sécurité V2X (Vehicle-to-anything communication)
* Matter, standard de connectivité pour la domotique et l’Internet des objets (IoT)

### Support applicatif et matériel

* Serveurs d’applications : WildFly (version communautaire), JBoss EAP (avec support Red Hat)
* Systèmes d’exploitation : GNU/Linux, Unix, FreeBSD, Solaris, Windows
* Bases de données : PostgreSQL, MariaDB, MySQL, Oracle DB, IBM DB2, MS-SQL, Hypersoniq, Derby, Sybase, Informix, Ingres
* Annuaires LDAP : OpenLDAP, Active Directory, LDAPv3, Sun Directory Server
* Modules HSM : nCipher netHSM, nCipher nShield, SafeNet Luna Network HSM7, SafeNet Luna SA, SafeNet Luna PCI, SafeNet ProtectServer Gold, Thales Trusted Cyber Technologies (TCT) Luna SA, Atos Trustway Proteccio, Bull TrustWay CryptoBox, Bull TrustWay PCI Crypto Card, Utimaco R2, Utimaco R3, Utimaco SafeGuard CryptoServer, Utimaco CryptoServer CP5, Securosys Primus HSM, Crypto4A QxHSM, Futurex HSM, I4P Trident HSM, Cavium Nitrox III, BlackVault HSM, ARX CoSign, AEP Keyper
* HSM dans le Cloud : AWS CloudHSM, AWS KMS (en), Azure Key Vault, Azure Managed HSM, Google Cloud Platform (GCP) KMS, IBM Hyper Protect Crypto Services (HPCS), Thales Data Protection on Demand (DPoD), Securosys CloudsHSM, Fortanix Data Security Manager HSM
* Cartes/tokens HSM : SmartCard-HSM, Nitrokey HSM, YubiHSM 2, OpenSC (générique)
* API et outils logiciels PKCS11 (en) : IronCAP Crypto (ICC), OpenSC (en), SoftHSM (en), PKCS11 Spy, Unbound Key Control (UKC)

## Certifications et conformité
### Critères communs

EJBCA v7.4 a été certifié conforme aux Critères communs (réf. : CSEC2019005) le 16 avril 2021 selon le profil de protection collaboratif « Certification Authorities » (PP4CA).
EJBCA v5.0 a été certifié conforme aux Critères communs (réf. : ANSSI-CC-2012/47) le 4 octobre 2012 selon le profil de protection « Certificate Issuing and Management Components » (PP-CIMC : composants de gestion et d’émission de certificats), niveau EAL 4+.
La librairie CESeCore – cœur de sécurité d’EJBCA – a été certifiée conforme aux Critères communs (réf. : ANSSI-CC-2012/33) le 14 juin 2012, niveau EAL 4+.

### Référentiel général de sécurité

Les caractéristiques d’EJBCA permettent – par paramétrage – d’avoir des instances conformes au Référentiel général de sécurité (RGS v2) de l’ANSSI (Agence nationale de la sécurité des systèmes d’information, administration française).

### ETSI eIDAS

Les caractéristiques de l’édition « Entreprise » d’EJBCA permettent – par paramétrage – d’avoir des instances pouvant être qualifiées selon la conformité européenne eIDAS (Electronic Identification and trust Services) de l’ETSI (European Telecommunications Standards Institute), c’est-à-dire selon le standard ETSI EN 319 411-2.

### CA/Browser Forum

Par paramétrage, les profils de certificats EJBCA peuvent être conformes aux exigences du CA/Browser Forum (en).
Ainsi, EJBCA peut émettre des certificats serveurs TLS conformes aux exigences de base du CA/Browser Forum, ainsi que des certificats EV (Extended Validation, ou Certificat à validation étendue (en)) conformes aux recommandations EV du CA/Browser Forum.
EJBCA peut également émettre des certificats de signature de code (Code Signing), des certificats d’horodatage (Time-stamping) et des certificats de sécurisation de courriels (S/MIME), conformémant aux exigences du CA/Browser Forum.
Ainsi, cela permet aux AC concernées d’être conformes aux Root Programs (en) des navigateurs web.