client_pki : la cle de signature vient du depot, non d un CDN tiers

Le depot porte deja cette cle : `serveur_step_ca` la pose depuis ses `files/`,
et les deux fichiers ont le meme SHA-256. Le client la telechargeait.

Une flotte d AMORCAGE n a ni serveur d artefacts ni cache, donc le schema reste
`https` et chaque hote sort en direct ; le telechargement echouait trois
amorcages sur quatre, sur une bordure amont que rien ici ne controle.

Le repli reste. Verifie sur une grappe jetable : la copie joue sur l hote qui
echouait, le telechargement est saute, et le CDN n est appele aucune fois.

Assisted-by: Claude Opus 5
This commit is contained in:
Mathieu Benoit 2026-09-29 03:10:15 -04:00
parent 5f6ffda5e8
commit 9d2e4035e8
2 changed files with 44 additions and 1 deletions

View file

@ -67,6 +67,21 @@ client_pki_provisioner_password: "{{ vault_step_ca_provisioner_password | defaul
# Depot apt officiel Smallstep (partage avec serveur_step_ca).
client_pki_depot_cle_url: "{{ client_pki_depot_schema }}://packages.smallstep.com/keys/apt/repo-signing-key.gpg"
client_pki_depot_cle_fichier: "/etc/apt/keyrings/smallstep.asc"
# LA MEME CLE QUE `serveur_step_ca` POSE, et c'est le DEPOT qui la porte : les deux
# fichiers ont le meme SHA-256. La chercher ici d'abord evite de sortir sur un CDN tiers
# pour des octets qu'on possede.
#
# CE N'EST PAS THEORIQUE POUR UNE FLOTTE D'AMORCAGE. Elle n'a par definition ni serveur
# d'artefacts ni cache, donc `client_pki_depot_schema` reste `https` et chaque hote sort
# EN DIRECT ; le telechargement echouait alors trois amorcages sur quatre, avec cinq
# reprises, sur une bordure amont que rien ici ne controle.
#
# Le chemin traverse `serveur_step_ca` plutot que de dupliquer le fichier : deux copies
# d'une meme cle divergent le jour ou l'amont la remplace, et rien ne dirait laquelle
# fait foi.
client_pki_depot_cle_locale: >-
{{ role_path }}/../serveur_step_ca/files/smallstep-repo-signing-key.asc
client_pki_depot_uri: "{{ client_pki_depot_schema }}://packages.smallstep.com/stable/debian"
client_pki_depot_suite: "debs"

View file

@ -103,8 +103,36 @@
- telecharger_la_cle_de_signature_smallste_present.stat.exists
- (telecharger_la_cle_de_signature_smallste_present.stat.size | default(0)) == 0
- name: Voir si le depot porte la cle de signature Smallstep
ansible.builtin.stat:
path: "{{ client_pki_depot_cle_locale }}"
delegate_to: localhost
become: false
changed_when: false
check_mode: false
register: client_pki_cle_depot_locale
# LE DEPOT D'ABORD, LE RESEAU ENSUITE. `serveur_step_ca` pose deja cette cle depuis ses
# `files/` sans rien demander a personne ; le client la telechargeait. Les deux fichiers
# sont identiques — meme SHA-256 — si bien que la sortie n'achetait rien et exposait
# chaque amorcage a une bordure tierce.
- name: Poser la cle de signature Smallstep depuis le depot
ansible.builtin.copy:
src: "{{ client_pki_depot_cle_locale }}"
dest: "{{ client_pki_depot_cle_fichier }}"
owner: root
group: root
mode: "0644"
when:
- not (telecharger_la_cle_de_signature_smallste_present.stat.exists and telecharger_la_cle_de_signature_smallste_present.stat.size | default(0) > 0)
- client_pki_cle_depot_locale.stat.exists
# LE REPLI RESTE, et il n'est pas mort : un depot qui ne porterait plus ce fichier doit
# encore pouvoir amorcer. Ce qui change est l'ORDRE — on ne sort que faute de mieux.
- name: Telecharger la cle de signature Smallstep
when: not (telecharger_la_cle_de_signature_smallste_present.stat.exists and telecharger_la_cle_de_signature_smallste_present.stat.size | default(0) > 0)
when:
- not (telecharger_la_cle_de_signature_smallste_present.stat.exists and telecharger_la_cle_de_signature_smallste_present.stat.size | default(0) > 0)
- not client_pki_cle_depot_locale.stat.exists
# `force` PARCE QU'UNE REPRISE CONDITIONNELLE NE REPREND RIEN (2026-09-12).
#
# Sans lui, `get_url` envoie un `If-Modified-Since` des que le fichier existe. Le cache