En lançant ipa-healthcheck --failures-only sur mon primaire FreeIPA (idm.gnali.home, RHEL 10.2, IPA 4.13.1), j’ai obtenu deux résultats ERROR liés au sous-système CA Dogtag :
| |
Le message est inquiétant — expiration de certificats et flags de confiance sont des sujets PKI sensibles. Dans mon cas, la CA était saine. Le healthcheck a simplement manqué de temps pour lire la base NSS.
Ce que signifient réellement ces erreurs
Les deux vérifications inspectent les certificats système stockés dans la base NSS Dogtag à /var/lib/pki/pki-tomcat/conf/alias. Pour cela, ipa-healthcheck appelle la CLI pki (nss-cert-export, nss-cert-show) pour chaque certificat système de la CA : signing, OCSP, audit, subsystem et serveur SSL.
Le mot-clé dans le résultat n’est pas expired ou invalid — c’est Request timed out.
ipa-healthcheck impose un délai par vérification. La valeur par défaut est de 10 secondes, définie dans ipahealthcheck.core.constants et configurable dans /etc/ipahealthcheck/ipahealthcheck.conf.
La vérification d’expiration CA parcourt plusieurs certificats dans une seule exécution du plugin. Si les opérations NSS cumulées dépassent 10 secondes, l’alarme se déclenche et la vérification remonte ERROR avec une exception générique de timeout — même lorsque tous les certificats sont valides.
Pourquoi l’accès NSS est lent
Lorsque pki-tomcat tourne, le processus Java maintient la base softoken NSS ouverte. Un accès concurrent via pki ou certutil peut bloquer sur les verrous PKCS #11.
Sur mon serveur, pki-tomcat était actif et le répertoire NSS était utilisé par le processus Java. Sous contention, les appels pki nss-cert-export étaient lents :
| Certificat | Durée typique |
|---|---|
caSigningCert cert-pki-ca | ~5 s |
ocspSigningCert cert-pki-ca | ~8–9 s |
Server-Cert cert-pki-ca | timeout à 10 s |
Un benchmark manuel a rendu le schéma évident : le premier export de Server-Cert cert-pki-ca après un passage du healthcheck a pris 87 secondes. Les exports suivants se terminaient en environ 1,5 secondes. C’est une contention de verrous classique, pas une corruption.
Parallèlement, une inspection directe montrait que les certificats étaient corrects :
| |
Les cinq certificats système de la CA étaient présents avec des dates de validité cohérentes. pki-server status indiquait le sous-système CA comme activé et joignable sur les ports 8080 et 8443.
Confirmation avec le mode debug
Lancer une vérification isolée avec --debug montre où le temps est consommé :
| |
Dans mon cas, signing et ocsp_signing ont retourné SUCCESS après 5 s et 8,8 s respectivement. Le certificat suivant (sslserver / Server-Cert cert-pki-ca) n’a pas fini avant l’alarme des 10 secondes.
La vérification des flags de confiance a échoué sur le même goulot d’étranglement — chargement de ocsp_signing depuis la NSSDB pendant que tomcat maintenait le verrou.
Correction : augmenter le timeout du healthcheck
Le fichier de configuration par défaut ne contient qu’une section [default] sans timeout explicite. Ajoutez :
| |
Il n’existe pas d’option --timeout en ligne de commande ; la valeur doit figurer dans le fichier de configuration (ou être passée via --config pointant vers un fichier alternatif).
Après avoir défini timeout = 120, les vérifications de certificats CA ont réussi. L’exécution complète a pris environ 66 secondes — bien en deçà de la nouvelle limite, mais très au-delà des 10 secondes par défaut.
Vérification :
| |
En résumé
- Un
ERRORdeCASystemCertExpiryCheckne signifie pas automatiquement qu’un certificat CA expire. Lisez le champkw.exception: Request timed outpointe vers le délai du healthcheck, pas vers la validité PKIX. - La base NSS Dogtag est lente à lire pendant que
pki-tomcattourne. C’est un problème de contention d’outils, pas un signe que la CA est défaillante. - Augmenter
timeoutdansipahealthcheck.confest une correction raisonnable sur les serveurs IPA en production, où redémarrer tomcat avant chaque healthcheck n’est pas pratique.
Si vous voyez les mêmes erreurs, vérifiez les certificats manuellement en premier. S’ils sont corrects et les échecs mentionnent des timeouts, vous êtes probablement dans la même situation — pas un incident PKI, juste un healthcheck qui a besoin de plus de temps.