linux_ejbca

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux_ejbca [2024/03/21 16:01] – [Gestion du service] nekanlinux_ejbca [2024/03/26 16:53] (Version actuelle) – [L'état des différents containers] nekan
Ligne 1: Ligne 1:
 ====== EJBCA - Installation d'une infrastructure à clés publiques (PKI) ====== ====== EJBCA - Installation d'une infrastructure à clés publiques (PKI) ======
  
-<label type="success">Création</label>  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2024/03/19 10:29// +<label type="success">Création</label>  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2024/03/19 10:29// \\ 
-<label type="info">Modification</label>  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2024/03/21 11:28//+<label type="info">Modification</label>  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2024/03/26 16:26//
  
 Une infrastructure à clés publiques ou PKI (//**P**ublic **K**ey **I**nfrastructure//) est un ensemble de services permettant de gérer des clés publiques et se faisant, permettant l'authentification d'un service, système ou utilisateur. Une infrastructure à clés publiques ou PKI (//**P**ublic **K**ey **I**nfrastructure//) est un ensemble de services permettant de gérer des clés publiques et se faisant, permettant l'authentification d'un service, système ou utilisateur.
Ligne 481: Ligne 481:
  
 <callout type="info" title="Bot" icon="true">Voilà, on dispose désormais d'un utilisateur authentifié avec un certificat et un mot de passe et disposant de droits limités.</callout> <callout type="info" title="Bot" icon="true">Voilà, on dispose désormais d'un utilisateur authentifié avec un certificat et un mot de passe et disposant de droits limités.</callout>
 +
 +===== Supervision =====
 +
 +Pour la supervision dans ''Nagios'', nous allons contrôler 4 éléments :
 +  * L'état du service ''docker''.
 +  * L'état des différents containers.
 +  * L'état de santé de la PKI.
 +  * La présence de mises à jour.
 +
 +Ci-dessous, je dépose les scripts que j'utilise pour les différents contrôles
 +
 +==== L'état du service docker ====
 +
 +On se base sur les plugins de ''nagios'' avec la commande :
 +<sxh bash>/usr/lib/nagios/plugins/check_procs -w 1:1 -c 0: -C dockerd</sxh>
 +
 +==== L'état des différents containers ====
 +
 +J'utilise le script de Tim Laurence (Source : [[https://github.com/timdaman/check_docker/blob/master/check_docker/check_docker.py|GitHub]]) pour contrôler l'état des containers. Une fois le script installé, il suffit de lancer la commande suivante :
 +<sxh bash>/usr/lib/nagios/plugins/check_docker.py --no-ok --status running --containers ejbca ejbca-database</sxh>
 +
 +==== L'état de santé de la PKI ====
 +
 +La PKI réalise une vérification automatique de son état de santé. Son rapport est affiché à l'URI ''/ejbca/publicweb/healthcheck/ejbcahealth''. Le script suivant interroge cette adresse et renvoie l'information au format ''NRPE'' :
 +<sxh bash>#!/bin/bash
 +
 +# Adresse du serveur
 +ServerAddress="localhost"
 +
 +# URI de l'état de santé
 +Uri="/ejbca/publicweb/healthcheck/ejbcahealth"
 +
 +# Requête
 +Request=$(curl -k -s https://${ServerAddress}${Uri})
 +
 +# Traitement du résultat de la requête
 +if [ "$Request" == "ALLOK" ]; then
 +        # Tout va bien
 +        Status="GOOD"
 +        ExitCode=0
 +else
 +        # PKI en erreur
 +        Status="CRIT"
 +        ExitCode=2
 +fi
 +
 +# Renvoi des informations
 +echo "$Status - Health status : $Request"
 +exit $ExitCode</sxh>
 +
 +==== La présence de mises à jour ====
 +
 +On vérifie la présence de mise à jour en comparant le hash de la version actuelle de notre PKI avec le hash de la dernière version.
 +<sxh bash>#!/bin/bash
 +
 +# Adresse du serveur
 +ServerAddress="localhost"
 +
 +# Uri du status
 +ServerUri="/ejbca/ejbca-rest-api/v1/certificate/status"
 +
 +# Nom du container
 +Container="keyfactor/ejbca-ce"
 +
 +# Récupération de la version actuelle
 +Actual=$(curl -k -s https://${ServerAddress}${ServerUri} | jq .revision | awk '{print $2}')
 +
 +# Récupération du hash de la version actuelle
 +ActualHash=$(docker manifest inspect ${Container}:${Actual} | jq .config.digest)
 +
 +# Récupération du hash de la dernière version
 +LatestHash=$(docker manifest inspect ${Container}:latest | jq .config.digest)
 +
 +# Test et retour
 +if [ "$ActualHash" == "$LatestHash" ]; then
 +        # Les hash sont les mêmes, on est à jour
 +        echo "GOOD - up-to-date"
 +        exit 0
 +else
 +        # Une mise à jour est disponible
 +        echo "WARN - update available"
 +        exit 1
 +fi</sxh>
  
 ===== Conclusion ===== ===== Conclusion =====
  • linux_ejbca.1711033277.txt.gz
  • Dernière modification : 2024/03/21 16:01
  • de nekan