OpenPGP Web Key Directory (WKD, advanced method) - publieke PGP-sleutels als route-B nginx-image op de derden-box
Find a file
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
.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/2487.eu WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +02:00
build-wkd.sh WKD (advanced method): nginx-image met gpg-wks-client-gebouwde hu/-boom (infra#88) 2026-09-13 18:31:35 +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.