OpenPGP Web Key Directory (WKD, advanced method) - publieke PGP-sleutels als route-B nginx-image op de derden-box
Find a file
claude-macmini 363d43ca32
All checks were successful
build-and-push / build (push) Successful in 5s
keys/3838.eu: sign@3838.eu (rsa4096, fpr 4E37C301D7E0299B0C8352F16F6E2234126E04CE, t/m 2030-09-05)
Bron: https://3737.nl/pgp-public.asc (eigenaar). Vindbaar zodra openpgpkey.3838.eu in DNS staat + domein op de app (runbook wkd-pgp-sleutels.md §3).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:57:00 +02:00
.forgejo/workflows WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +02:00
keys keys/3838.eu: sign@3838.eu (rsa4096, fpr 4E37C301D7E0299B0C8352F16F6E2234126E04CE, t/m 2030-09-05) 2026-09-13 21:57:00 +02:00
build-wkd.sh build-wkd.sh: gpg-wks-client kent geen --batch (CI-build 2 faalde) 2026-09-13 18:34:23 +02:00
Dockerfile WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +02:00
nginx.conf WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +02:00
README.md WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +02:00

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.