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

51 lines
2.3 KiB
Markdown

# 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 :
```sh
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.