Section 01PKIFactorZetaCADevOpsArchitecte

Démarrage rapide

De zéro à premier certificat émis en moins de 5 minutes.

Dernière mise à jour 2026-04-18

PKIFactor s'installe en quelques minutes via Docker Compose, Kubernetes (Helm) ou en mode appliance virtuelle (OVA/QCOW2). Cette section vous guide jusqu'à votre premier certificat émis depuis l'autorité de certification de votre choix : ZetaCA (post-quantum), HashiCorp Vault PKI, Microsoft ADCS ou EJBCA.

1.1. Prérequis

ComposantVersion minimaleNotes
Docker Engine24.0+Compose v2 inclus
Kubernetes1.27+Helm 3.12+ pour le chart
PostgreSQL14+Géré par PKIFactor en mode standalone
RAM4 Go8 Go recommandés en production
CPU2 vCPU4 vCPU recommandés en production
Stockage20 GoSSD recommandé
RéseauTCP 443, 80+ 8443 (EST), 8555 (ACME), 8829 (CMP) selon protocoles activés

OS supportés : Ubuntu 22.04/24.04 LTS, RHEL 9, Debian 12, Rocky Linux 9.

Astuce

Pour démarrer le plus rapidement possible, l'installation Docker standalone convient à la plupart des PoC. Pour la production, privilégiez Helm (HA natif) ou l'OVA fournie (single-node durci).

1.2. Installation Docker (mode standalone)

bash
# 1. Téléchargement du bundle de release
curl -fsSL https://get.zetacert.com/install.sh | sh

# 2. Configuration minimale (interactive)
sudo pkifactor-ctl init \
  --domain pki.exemple.com \
  --admin-email admin@exemple.com \
  --license /chemin/vers/license.json

# 3. Démarrage des services
sudo pkifactor-ctl start

# 4. Vérification de l'état
sudo pkifactor-ctl status
# Expected output:
#   ✓ postgres        running   (healthy)
#   ✓ backend         running   (healthy)
#   ✓ frontend        running   (healthy)
#   ✓ acme            running   (healthy)
#   ✓ est             running   (healthy)
#   ✓ nginx           running   (healthy)

L'interface d'administration est disponible sur https://pki.exemple.com (le mot de passe initial est imprimé dans la sortie de pkifactor-ctl init).

1.3. Installation Kubernetes (Helm)

bash
# 1. Ajout du repository Helm
helm repo add zetacert https://charts.zetacert.com
helm repo update

# 2. Création du namespace dédié
kubectl create namespace pkifactor

# 3. Installation avec valeurs personnalisées
helm install pkifactor zetacert/pkifactor \
  --namespace pkifactor \
  --set global.domain=pki.exemple.com \
  --set postgres.persistence.size=50Gi \
  --set ingress.tls.secretName=pki-tls \
  --set license.secretName=pki-license

# 4. Suivi du déploiement
kubectl -n pkifactor get pods -w
yaml
# values-prod.yaml — exemple production HA
global:
  domain: pki.exemple.com
  imageRegistry: ghcr.io/zetacert

backend:
  replicaCount: 3
  resources:
    requests: { cpu: 500m, memory: 1Gi }
    limits:   { cpu: 2000m, memory: 4Gi }

postgres:
  enabled: false  # On utilise un Patroni externe
externalDatabase:
  host: pgbouncer.db.svc.cluster.local
  port: 6432
  database: clm_db
  existingSecret: pki-db-credentials

protocols:
  acme: { enabled: true,  port: 8555 }
  est:  { enabled: true,  port: 8443 }
  scep: { enabled: false }
  cmp:  { enabled: true,  port: 8829 }

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: zetaca-issuer

1.4. Premier certificat en 5 minutes

Étape 1 — Connexion au tableau de bord

swift
URL : https://pki.exemple.com
Identifiant : admin@exemple.com
Mot de passe : (généré à l'init, voir /var/lib/pkifactor/initial_password)

Étape 2 — Création d'une organisation

Dans l'interface, naviguez vers Settings → Organizations → New Organization et renseignez :

yaml
Name           : ACME Corporation
Code           : ACME
Default domain : acme.com

Étape 3 — Connexion d'une autorité de certification

Naviguez vers PKI Inventory → New CA Connection et choisissez votre type de PKI :

bash
# Exemple : connexion à un Vault PKI existant
curl -X POST https://pki.exemple.com/api/inventory/pkis \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Vault PKI Production",
    "type": "vault",
    "base_url": "https://vault.exemple.com:8200",
    "auth_method": "approle",
    "auth_config": {
      "role_id": "9566ebc2-...",
      "secret_id": "f8c3d9e1-..."
    },
    "mount_path": "pki-int/",
    "default_role": "srv-tls"
  }'

Étape 4 — Création d'un profil de certificat (template CLM)

bash
curl -X POST https://pki.exemple.com/api/clm/templates \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Web Server TLS",
    "code": "web-tls",
    "organization_id": 1,
    "pki_id": 1,
    "pki_role": "srv-tls",
    "key_algorithm": "ECDSA_P256",
    "validity_days": 90,
    "key_usage": ["digital_signature", "key_encipherment"],
    "extended_key_usage": ["server_auth"],
    "requires_approval": false,
    "acme_enabled": true,
    "acme_path": "web-tls"
  }'

Étape 5 — Émission du premier certificat

bash
# Via API
curl -X POST https://pki.exemple.com/api/certificates \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template_code": "web-tls",
    "subject": { "common_name": "www.acme.com" },
    "sans": ["www.acme.com", "acme.com"],
    "key_format": "pkcs8",
    "delivery_format": "pem"
  }'

# Réponse
{
  "id": 42,
  "serial": "1A:2B:3C:...",
  "status": "issued",
  "not_before": "2026-04-18T10:00:00Z",
  "not_after":  "2026-07-17T10:00:00Z",
  "download_url": "/api/certificates/42/download?fmt=pem"
}
Aperçu dashboard — PKIFactor
PK
PKIFactor
admin@acme.com

Dashboard

Last updated 2 min ago

Active certs
12 458
+2.1% WoW
Expiring 30d
147
3 critical
Pending appr.
8
2 > 24h
Recent issuance
CNCAIssuedTTL
www.acme.comZetaCA Demo10:02 UTC90d
api.acme.comVault PKI09:48 UTC30d
vpn-gw.acme.comADCS Corp09:31 UTC1y
db-repl-02.acme.comEJBCA CE09:14 UTC90d
Diagramme 1.A — Parcours en 5 minutes
  1. 1
    Install
    Docker / Helm / OVA
  2. 2
    Create org
    Organisation
  3. 3
    Connect CA
    Vault, ADCS, ZetaCA
  4. 4
    Define template
    Algo, durée, usages
  5. 5
    Issue cert
    API ou UI
< 5 min