Set-OPS-Public/roles/serveur_step_ca/files/README-cle-smallstep.md
Daniel Allaire fc76a4e252 step-ca : la cle de signature versionnee — plus aucun appel sortant pour l obtenir
Le deploiement de Chezlepro depuis son propre runner a franchi le socle et le
durcissement sur les quinze machines, et s est arrete sur une seule :

    infra-pki-01 : Echec temporaire dans la resolution du nom
    url: https://packages.smallstep.com/keys/apt/repo-signing-key.gpg

UN TENANT N A PAS DE DNS SORTANT, ET C EST VOULU. Il resout chez lui, sa requete ne
traverse jamais la frontiere. apt s en sort par le mandataire du cache, qui resout a
sa place ; get_url n a pas de mandataire. Mesure sur la machine : DNS bloque, 443
sortant OK par adresse, apt via le cache OK.

Les cinq reprises du role ne pouvaient rien : elles etaient ecrites pour un serveur
INTERMITTENT (2026-08-23), pas pour une resolution fermee. Une reprise ne repare que
ce qui est passager.

UNE DETTE NOMMEE, APPELEE. client_artefacts le disait : les depots tiers en HTTPS
vont en direct, la seconde voie est propre et RESTE A FAIRE. Elle a ete appelee le
jour ou un ecosysteme s est reconstruit derriere une frontiere qui fait son travail.

La cle est versionnee, avec son empreinte et sa procedure de rafraichissement. Meme
idiome que les collections et les roues : le depot porte, la cible n ouvre rien.
C est ce qui rend une lignee reproductible SANS INTERNET.

Cout ecrit : une rotation amont n est plus recuperee toute seule, mais elle ne passe
pas inapercue — apt refuse alors le depot, bruyamment.

TROUVE EN LA RECUPERANT : l URL publique REDIRIGE vers pkgs.infra.smallstep.com.
Sans suivre les redirections on obtient un fichier VIDE, et curl -f sans -L sort en
succes. La procedure le dit, parce que ce piege ne se voit qu au deploiement suivant.

Le correctif du pare-feu a tenu : plus une seule suspension, quinze machines a
ok=66 et 0 unreachable.

make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec, 0 saute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-08-30 12:13:39 -04:00

2.3 KiB

La clé de signature du dépôt Smallstep — versionnée, et pourquoi

pub   rsa2048 2021-05-04 [SC]
      35BA A0B3 3E9E B396 F59C  A838 C0BA 5CE6 DC63 15A3
uid   Artifact Registry Repository Signer <artifact-registry-repository-signer@google.com>

Pourquoi elle est ici et non téléchargée

Un tenant n'a pas de DNS sortant, et c'est voulu — il résout chez lui, sa requête ne traverse jamais la frontière. apt s'en sort par le mandataire du cache, qui résout à sa place ; get_url n'a pas de mandataire.

Mesuré le 2026-08-30 sur infra-pki-01, première machine à porter l'autorité de certification de Chezlepro :

Request failed: <urlopen error [Errno -3] Échec temporaire dans la résolution du nom>
url: https://packages.smallstep.com/keys/apt/repo-signing-key.gpg

La dette était déjà nommée dans roles/client_artefacts/defaults/main.yml : « les dépôts tiers en HTTPS continuent d'aller en direct […] la seconde voie est propre et reste à faire ». Elle a été appelée le jour où un écosystème s'est reconstruit derrière une frontière qui fait son travail.

Ce que ça achète : une lignée qui se reproduit sans Internet. C'est le même principe que les collections Ansible et les roues Python — le contrôleur récupère une fois, le dépôt porte, la cible n'ouvre rien.

Ce que ça coûte, et qu'il faut savoir

Cette clé expirera ou tournera un jour. Le dépôt apt échouera alors bruyamment, à la vérification de signature — un échec clair, pas un silence. C'est le bon sens de la panne : mieux vaut un refus lisible qu'un téléchargement qui réussit depuis n'importe où.

La remettre à jour

Depuis une machine qui a le DNS (le poste de l'exploitant), et en suivant les redirections — l'URL publique renvoie vers pkgs.infra.smallstep.com, et sans -L on récupère un fichier VIDE que rien ne signale :

curl -fsSL https://packages.smallstep.com/keys/apt/repo-signing-key.gpg \
  -o roles/serveur_step_ca/files/smallstep-repo-signing-key.asc
gpg --show-keys --with-fingerprint roles/serveur_step_ca/files/smallstep-repo-signing-key.asc

Comparer l'empreinte à celle du haut de ce fichier avant de committer. Une clé qu'on remplace sans regarder son empreinte n'est plus une clé, c'est un fichier.