wkd/README.md
claude-macmini 21b237f0da
All checks were successful
build-and-push / build (push) Successful in 8s
WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:31:35 +02:00

27 lines
1.9 KiB
Markdown

# wkd — OpenPGP Web Key Directory (publieke PGP-sleutels, advanced method)
Mailclients (GnuPG, Thunderbird, Mailvelope, Proton-lookup, …) vinden hiermee automatisch de **publieke**
PGP-sleutel bij een mailadres. Route-B image-app op de **derden-box**; per domein een subdomein
`openpgpkey.<domein>` → `https://openpgpkey.<domein>/.well-known/openpgpkey/<domein>/hu/<hash>?l=<local-part>`.
```
push naar main → Forgejo Actions (act_runner docgen): stage 1 bouwt met gpg-wks-client de hu/-boom
uit keys/<domein>/<adres>.asc, stage 2 = nginx die 'm serveert
→ push naar git.doc-gen.eu/wsfcqyxbu1/wkd:latest
→ host-watcher (docgen, |remote-entry) ziet de nieuwe digest → Coolify deployt op de derden-box
```
- **Alles staat in git** (publieke sleutels zijn geen geheim); geen volumes, geen env, geen back-up nodig.
- **Alleen publieke sleutels.** De build faalt op een `PRIVATE KEY BLOCK`, op een bestandsnaam die niet
bij de domeinmap hoort, en op een sleutel zonder UID met exact dat adres.
- **Hash-regel** (spec, draft-koch-openpgp-webkey-service): `hu/<z-base-32(SHA-1(local-part in lowercase))>`;
wij rekenen 'm nooit zelf uit — `gpg-wks-client --install-key` doet dat, en exporteert alléén de UID
van dat adres (andere UIDs moeten eruit). Controle: `gpg-wks-client --print-wkd-hash <adres>`.
- **Sleutel toevoegen/vernieuwen:** `keys/<domein>/<adres>.asc` (= `gpg --export --armor <adres>`) →
commit + push. Nieuw domein = nieuwe map `keys/<domein>/` + DNS `openpgpkey.<domein>` + domein op de
Coolify-app.
- **Headers:** `Content-Type: application/octet-stream`, `Access-Control-Allow-Origin: *`; `policy` is leeg
(verplicht bestand). Toegangslog staat uit (geen sporen van wie welk adres opvraagt).
- **Versie:** `FROM alpine:<tag>` (build) + `FROM nginx:<tag>-alpine` (runtime) in de `Dockerfile`.
Beheer/runbook: infra-repo `wSFcQyxBu1/infra`, `runbooks/wkd-pgp-sleutels.md`; issue infra#88.