Auteur : Daniel Caron
Dernière mise à jour : Mars 2026
La révocation d'un certificat PKI CaronTech est gérée via le script PowerShell revoke-cert.ps1 depuis la station admin Windows. Le script gère deux cas de figure distincts et appelle automatiquement sign-cert.ps1 lorsqu'un renouvellement est requis.
| Cas | Mode | Usage |
|---|---|---|
| Décommission | -decommission |
Serveur ou service retiré sans remplacement |
| Renouvellement | -renew |
Ajout de SAN, renouvellement forcé, remplacement de certificat compromis |
Règle générale :
- Ajout d'un SAN →
revoke-cert.ps1 -renew+ modifier$serverSANsdanssign-cert.ps1au préalable- Renouvellement avant 30 jours →
revoke-cert.ps1 -renew- Décommission serveur/service →
revoke-cert.ps1 -decommission
revoke-cert.ps1 : C:\Users\danie\revoke-cert.ps1sign-cert.ps1 : C:\Users\danie\sign-cert.ps1 (requis pour -renew)C:\Users\danie\.ssh\id_ed25519_vmadmin (accès VMs)whvd9999.home.carontech.netwhvd9998.home.carontech.netC:\pki-temp\logs\Pour révoquer un certificat sans émettre de nouveau certificat :
.\revoke-cert.ps1 -certName <nom> -decommission -verbose
Exemples :
# Décommission d'un serveur
.\revoke-cert.ps1 -certName whvd2002 -decommission -verbose
# Décommission avec raison explicite
.\revoke-cert.ps1 -certName whvd2002 -decommission -reason cessationOfOperation -verbose
Pour révoquer et immédiatement réémettre un nouveau certificat :
.\revoke-cert.ps1 -certName <nom> -renew -verbose
Exemples :
# Renouvellement standard (ajout SAN, renouvellement forcé)
.\revoke-cert.ps1 -certName whvu1515 -renew -verbose
# Certificat compromis
.\revoke-cert.ps1 -certName phhv01 -renew -reason keyCompromise -verbose
# Renouvellement avec durée personnalisée
.\revoke-cert.ps1 -certName whvu1515 -renew -days 180 -verbose
Toujours tester avant d'exécuter pour vrai :
.\revoke-cert.ps1 -certName <nom> -renew -dryRun -verbose
.\revoke-cert.ps1 -certName <nom> -decommission -dryRun -verbose
| Valeur | Usage recommandé |
|---|---|
superseded |
Renouvellement standard, ajout de SAN (défaut pour -renew) |
cessationOfOperation |
Décommission serveur ou service (défaut pour -decommission) |
keyCompromise |
Clé privée compromise ou suspectée compromise |
unspecified |
Cas non couverts par les autres raisons |
-renewStation admin Windows
│
├─► Recherche certificat dans index.txt (whvd9999)
├─► Révocation openssl ca -revoke (whvd9999)
├─► Régénération CRL (whvd9999)
├─► Déploiement CRL → whvd9998
├─► Validation CRL (nextUpdate)
└─► Appel sign-cert.ps1 -server/-service <nom>
│
├─► Génère CNF + CSR sur serveur cible
├─► Signature sur whvd9999
├─► Déploiement fullchain sur serveur cible
├─► Restart service
└─► Validation SANs + expiry
-decommissionStation admin Windows
│
├─► Recherche certificat dans index.txt (whvd9999)
├─► Révocation openssl ca -revoke (whvd9999)
├─► Régénération CRL (whvd9999)
├─► Déploiement CRL → whvd9998
├─► Validation CRL (nextUpdate)
└─► Affichage des actions manuelles requises
C'est le cas d'usage le plus fréquent — par exemple lorsqu'un nouveau service est ajouté sur whvu1515.
Étape 1 — Modifier sign-cert.ps1 pour ajouter le SAN :
$serverSANs["whvu1515"] = @(
"whvu1515.home.carontech.net",
"wiki.carontech.net",
"photos.carontech.net",
"vault.carontech.net",
"nouveau-service.carontech.net" # ← ajouter ici
)
Étape 2 — Simuler d'abord :
.\revoke-cert.ps1 -certName whvu1515 -renew -dryRun -verbose
Étape 3 — Exécuter :
.\revoke-cert.ps1 -certName whvu1515 -renew -verbose
⚠️ Le certificat actuel sera révoqué immédiatement. Un bref downtime SSL est possible entre la révocation et le déploiement du nouveau certificat (~30 secondes).
Étape 1 — Révoquer le certificat :
.\revoke-cert.ps1 -certName whvd2002 -decommission -verbose
Étape 2 — Actions manuelles post-révocation (rappelées par le script) :
1. Retirer le serveur des tables dans sign-cert.ps1
(deployPaths, serverSANs, serverIPs, serviceRestart)
2. Désactiver / supprimer la VM sur Proxmox
3. Retirer l'entrée DNS dans UniFi
4. Mettre à jour wiki.carontech.net
[ERROR] Certificat 'xxx' introuvable dans index.txt
Vérifier manuellement sur whvd9999 :
ssh [email protected]
grep <certName> /opt/pki/intermediate-ca/index.txt
Le certName doit correspondre exactement au CN sans le domaine (ex: whvu1515 et non whvu1515.home.carontech.net).
Le script détecte les certificats déjà révoqués (R dans index.txt) et demande confirmation avant de régénérer la CRL.
Vérifier la connectivité VPN-Admin :
# Tester whvd9999 (CA — VLAN Management)
ssh -i $HOME\.ssh\id_ed25519_vmadmin [email protected] "echo OK"
# Tester whvd9998 (CRL — VLAN Serveurs)
ssh -i $HOME\.ssh\id_ed25519_vmadmin [email protected] "echo OK"
La connexion WireGuard VPN-Admin doit être active pour accéder aux deux serveurs.
Vérifier l'état de la CA avant de relancer :
ssh [email protected]
grep <certName> /opt/pki/intermediate-ca/index.txt
| État dans index.txt | Action |
|---|---|
V (valid) |
Révocation non complétée — relancer normalement |
R (revoked) |
Révocation OK — relancer avec confirmation ou régénérer CRL manuellement |
| Absent | CA propre — relancer normalement |
Pour vérifier l'état de la CRL après une révocation :
ssh [email protected] \
"openssl crl -in /var/www/crl/intermediate-ca.crl -noout -text | grep -E 'Next Update|Serial'"