serveurs_* -> serveur_, clients_ -> client_, suffixes pluriels au singulier (serveur_web_dorsal/frontal, client_metrique, client_journal). Renommage par tokens exacts : repertoires de roles, playbooks de groupes, group_vars, variables internes des roles (serveur_nginx_*, conformite ansible-lint), groupes du plan, constantes de code, docs. Faux-amis preserves (serveurs_bd, scripts/serveurs.py, fonctions Python). Groupes d'etat gardes au pluriel (hotes_actifs/planifies, modeles_vm). Valide : ansible-lint 0 echec (0 var-naming), diff vide de la generation, node --check, tous les registres. Ajout de .ansible-lint excluant docs/ (registres de donnees, pas du contenu Ansible). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.1 KiB
Markdown
43 lines
2.1 KiB
Markdown
# client_pki
|
|
|
|
Intégration cliente **PKI / identité machine** : chaque hôte fait confiance à l'AC
|
|
interne (`serveur_step_ca`), obtient **son propre certificat** et le renouvelle
|
|
automatiquement.
|
|
|
|
## Rôle
|
|
- Installe `step-cli` (dépôt apt Smallstep).
|
|
- **Confiance** : `step ca bootstrap --install` → installe la racine de l'AC dans le
|
|
magasin de confiance système (l'hôte fait confiance au TLS interne réel).
|
|
- **Certificat d'hôte** : `step ca certificate <fqdn>` via le provisioner.
|
|
- **Renouvellement automatique** : unités systemd officielles `cert-renewer@.{service,timer}`
|
|
(vérifie/renouvelle toutes les 15 min, recharge le service consommateur s'il existe).
|
|
|
|
## « Chaque hôte authentifiable »
|
|
Après ce rôle, l'hôte possède une **identité machine** vérifiable : un certificat émis
|
|
par l'AC Chezlepro, renouvelé sans intervention. Les services peuvent l'utiliser pour
|
|
du TLS / mTLS interne.
|
|
|
|
## Secrets requis (Vault)
|
|
```yaml
|
|
client_pki_ca_fingerprint: "{{ vault_step_ca_fingerprint }}" # empreinte racine de l'AC
|
|
client_pki_provisioner_password: "{{ vault_step_ca_provisioner_password }}" # partage avec serveur_step_ca
|
|
```
|
|
L'empreinte racine s'obtient sur l'AC (`step certificate fingerprint <root_ca.crt>`).
|
|
|
|
## Variables principales
|
|
| Variable | Défaut | Rôle |
|
|
| --- | --- | --- |
|
|
| `client_pki_ca_url` | `https://infra-pki-01.chezlepro.internal:8443` | URL de l'AC |
|
|
| `client_pki_provisioner` | `admin@chezlepro.internal` | Provisioner émetteur |
|
|
| `client_pki_nom_cert` | FQDN de l'hôte | Nom du certificat |
|
|
|
|
## Notes / sécurité
|
|
- Émission via le provisioner **JWK** (mot de passe partagé) : tout hôte avec ce secret
|
|
peut émettre des certificats. Acceptable en interne ; pour durcir, basculer vers ACME
|
|
ou des jetons à usage unique par hôte (phase ultérieure).
|
|
- Pour qu'un service (nginx, keycloak…) recharge automatiquement après renouvellement,
|
|
nommer son certificat d'après le service (instance `cert-renewer@<service>`).
|
|
|
|
## Prérequis
|
|
- Dépendance `client_pki requiert serveur_step_ca actif` (déjà dans `docs/dependances-groupes.yml`).
|
|
- Réseau vers l'AC (`:8443`).
|