Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| linux_ejbca [2024/03/20 12:53] – nekan | linux_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=" | + | <label type=" |
| + | <label type=" | ||
| Une infrastructure à clés publiques ou PKI (// | Une infrastructure à clés publiques ou PKI (// | ||
| Ligne 134: | Ligne 135: | ||
| echo " | echo " | ||
| echo "" | echo "" | ||
| - | echo "Usage : ./ | + | echo "Usage : ./ |
| echo "" | echo "" | ||
| - | echo "start | + | echo "backup |
| - | echo "stop Arrête l' | + | echo "help Affiche cette aide." |
| echo " | echo " | ||
| + | echo " | ||
| echo " | echo " | ||
| - | echo "help Affiche cette aide." | + | echo "stop Arrête l' |
| + | echo " | ||
| } | } | ||
| Ligne 148: | Ligne 151: | ||
| case $1 in | case $1 in | ||
| - | " | + | " |
| ACTION=" | ACTION=" | ||
| ;; | ;; | ||
| Ligne 286: | Ligne 289: | ||
| ;; | ;; | ||
| esac | esac | ||
| + | ;; | ||
| + | " | ||
| + | # Vérification de l' | ||
| + | case $STATUS in | ||
| + | 0) | ||
| + | # Démarré | ||
| + | echo " | ||
| + | Version=$(curl -k -s https:// | ||
| + | UserName=$(grep ' | ||
| + | PassWord=$(grep ' | ||
| + | cd $WRKDIR && docker compose exec $EJBDB mysqldump ejbca -u${UserName} -p${PassWord} > ejbca-${Version}-backup-$(date +%Y%m%d_%H%M_%Z).sql | ||
| + | if [[ $? -eq 0 ]]; then | ||
| + | # Sauvegarde réussie | ||
| + | echo " | ||
| + | CODE=0 | ||
| + | else | ||
| + | # Sauvegarde raté | ||
| + | echo " | ||
| + | CODE=2 | ||
| + | fi | ||
| + | ;; | ||
| + | *) | ||
| + | # Autres | ||
| + | echo " | ||
| + | CODE=2 | ||
| + | ;; | ||
| + | esac | ||
| + | ;; | ||
| + | " | ||
| + | # On arrête l' | ||
| + | echo " | ||
| + | cd $WRKDIR && docker compose down | ||
| + | |||
| + | # Mise à jour | ||
| + | echo " | ||
| + | cd $WRKDIR && docker image pull keyfactor/ | ||
| + | |||
| + | # Redémarrage de l' | ||
| + | echo " | ||
| + | cd $WRKDIR && docker compose up -d | ||
| ;; | ;; | ||
| *) | *) | ||
| Ligne 307: | Ligne 350: | ||
| < | < | ||
| - | ===== Configuration ===== | + | ===== Création du compte administrateur |
| - | + | ||
| - | ==== Création du compte administrateur ==== | + | |
| <callout type=" | <callout type=" | ||
| Ligne 315: | Ligne 356: | ||
| * Admin : Compte d' | * Admin : Compte d' | ||
| - | De mon côté, je pars toujours du fait qu'un administrateur a toujours tous les droits. Lorsque les droits sont limités, on est alors sur un profils d' | + | De mon côté, je pars toujours du fait qu'un administrateur a toujours tous les droits. Lorsque les droits sont limités, on est alors sur un profils d' |
| Du coup, dans la suite de cette procédure, j' | Du coup, dans la suite de cette procédure, j' | ||
| Ligne 322: | Ligne 363: | ||
| </ | </ | ||
| - | === Création du certificat === | + | ==== Création du certificat |
| * Lors de la 1< | * Lors de la 1< | ||
| Ligne 350: | Ligne 391: | ||
| <image shape=" | <image shape=" | ||
| - | === Import du certificat dans le navigateur === | + | ==== Import du certificat dans le navigateur |
| <callout type=" | <callout type=" | ||
| Ligne 362: | Ligne 403: | ||
| * On peut vérifier la présence du nouveau certificat dans la liste et on sort du gestionnaire. | * On peut vérifier la présence du nouveau certificat dans la liste et on sort du gestionnaire. | ||
| - | === Création du compte sur EJBCA === | + | ==== Création du compte sur EJBCA ==== |
| * On retourne sur l' | * On retourne sur l' | ||
| Ligne 379: | Ligne 420: | ||
| cd / | cd / | ||
| - | === Test et validation === | + | ==== Test et validation |
| * On ferme le navigateur pour vider le cache et on se reconnecte sur l' | * On ferme le navigateur pour vider le cache et on se reconnecte sur l' | ||
| Ligne 391: | Ligne 432: | ||
| <callout type=" | <callout type=" | ||
| - | ==== Conclusion ==== | + | ===== Configuration pour les accès API ===== |
| + | |||
| + | Si on souhaite interagir avec les autorités de certifications via API (pour de l' | ||
| + | |||
| + | ==== Service ==== | ||
| + | |||
| + | * On va dans '' | ||
| + | <image shape=" | ||
| + | |||
| + | ==== Utilisateur ==== | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | * On va commencer par créer un certificat utilisateur, | ||
| + | * Une fois en possession du certificat, on va dans '' | ||
| + | <image shape=" | ||
| + | * On nomme notre rôle et on clique sur '' | ||
| + | <image shape=" | ||
| + | * On édite les droits pour ce nouveau rôle en cliquant sur '' | ||
| + | <image shape=" | ||
| + | * On va directement dans '' | ||
| + | <image shape=" | ||
| + | * On modifie les puces suivantes : | ||
| + | |||
| + | ^Catégorie | ||
| + | |Role Based Access Rules | ||
| + | |Regular Access Rules | ||
| + | |::: | ||
| + | |::: | ||
| + | |::: | ||
| + | |CA Access Rules | ||
| + | |End Entity Profile Access Rules | ||
| + | |::: | ||
| + | |::: | ||
| + | |::: | ||
| + | |::: | ||
| + | |||
| + | * On n' | ||
| + | * On retourne sur notre liste de rôle et on clique sur '' | ||
| + | <image shape=" | ||
| + | * Comme précédemment pour le compte administrateur, | ||
| + | * **Match with** : On sélectionne '' | ||
| + | * **CA** : On choisit '' | ||
| + | * **Match Value** : On entre le nom du compte utilisateur, | ||
| + | * **Description** : Optionnel, cela permet d' | ||
| + | * On ajoute le compte en cliquant sur '' | ||
| + | <image shape=" | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | ===== Supervision ===== | ||
| + | |||
| + | Pour la supervision dans '' | ||
| + | * L' | ||
| + | * L' | ||
| + | * L' | ||
| + | * La présence de mises à jour. | ||
| + | |||
| + | Ci-dessous, je dépose les scripts que j' | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | On se base sur les plugins de '' | ||
| + | <sxh bash>/ | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | J' | ||
| + | <sxh bash>/ | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | La PKI réalise une vérification automatique de son état de santé. Son rapport est affiché à l'URI ''/ | ||
| + | <sxh bash># | ||
| + | |||
| + | # Adresse du serveur | ||
| + | ServerAddress=" | ||
| + | |||
| + | # URI de l' | ||
| + | Uri="/ | ||
| + | |||
| + | # Requête | ||
| + | Request=$(curl -k -s https:// | ||
| + | |||
| + | # Traitement du résultat de la requête | ||
| + | if [ " | ||
| + | # Tout va bien | ||
| + | Status=" | ||
| + | ExitCode=0 | ||
| + | else | ||
| + | # PKI en erreur | ||
| + | Status=" | ||
| + | ExitCode=2 | ||
| + | fi | ||
| + | |||
| + | # Renvoi des informations | ||
| + | echo " | ||
| + | exit $ExitCode</ | ||
| + | |||
| + | ==== 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># | ||
| + | |||
| + | # Adresse du serveur | ||
| + | ServerAddress=" | ||
| + | |||
| + | # Uri du status | ||
| + | ServerUri="/ | ||
| + | |||
| + | # Nom du container | ||
| + | Container=" | ||
| + | |||
| + | # Récupération de la version actuelle | ||
| + | Actual=$(curl -k -s https:// | ||
| + | |||
| + | # Récupération du hash de la version actuelle | ||
| + | ActualHash=$(docker manifest inspect ${Container}: | ||
| + | |||
| + | # Récupération du hash de la dernière version | ||
| + | LatestHash=$(docker manifest inspect ${Container}: | ||
| + | |||
| + | # Test et retour | ||
| + | if [ " | ||
| + | # 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</ | ||
| + | |||
| + | ===== Conclusion | ||
| <callout type=" | <callout type=" | ||
| On peut désormais créer des autorités de certifications : [[ejbca_createca|EJBCA - Création de certificats racine et intermédiaire]] | On peut désormais créer des autorités de certifications : [[ejbca_createca|EJBCA - Création de certificats racine et intermédiaire]] | ||
| - | \\ | + | |
| - | \\ | + | |
| - | \\ | + | |
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||