
Clientseitige PKI-Toolbox, die X.509-, CSR-, Chain-, CRL-, PKCS#7- und PKCS#12-Artefakte dekodiert, ASN.1 anzeigt, Formate konvertiert und selbstsignierte Zertifikate im Browser generiert.
Eine selbst gehostete, zu 100 % clientseitige Toolbox für PKI-Artefakte: X.509-Zertifikate, PKCS#10-CSRs, Ketten, CRLs, PKCS#7- und PKCS#12-Bundles, rohes ASN.1, Formatkonvertierung, Fingerabdrücke und Zertifikatsausstellung. Ein datenschutzfreundlicher, selbst hostbarer Ersatz für Online-Zertifikatsdecoder.
Live-Demo: https://pki-toolbox.youkyi.net (die Demo ist derselbe statische Build, den du unten selbst hosten kannst; nichts, was du einfügst, verlässt deinen Browser).
Jedes Byte wird in deinem Browser mit @peculiar/x509 und pkijs geparst. Nichts wird jemals hochgeladen, das Backend liefert nur statische Dateien aus. Das musst du nicht einfach glauben: siehe Überprüfbare Privatsphäre unten.
| Werkzeug | Kategorie | Beschreibung |
|---|---|---|
| Zertifikatsdecoder | Dekodierung | Jedes Feld eines X.509-Zertifikats: Subject, Issuer, Gültigkeit, SANs, Key Usage, Fingerabdrücke |
| CSR-Decoder | Dekodierung | Subject, öffentlicher Schlüssel, Signaturalgorithmus und angeforderte Erweiterungen einer PKCS#10-Anfrage |
| Ketten-Decoder | Dekodierung | Zerlegt ein verkettetes PEM-Bundle in eine geordnete Kette und verifiziert jede Issuer-zu-Subject-Verknüpfung |
| CRL-Decoder | Dekodierung | Widerrufene Einträge, Daten und Widerrufsgründe |
| PKCS#7-Decoder | Dekodierung | Jedes Zertifikat, das ein PKCS#7-/CMS-Bundle enthält |
| PKCS#12-Decoder | Dekodierung | Öffnet passwortgeschützte .p12-/.pfx-Dateien |
| Fingerabdrücke | Inspektion | SHA-1 / SHA-256 / SHA-512 des DER |
| ASN.1-Viewer | Inspektion | Aufklappbarer Tag/Length/Value-Baum jedes DER-Artefakts |
| Formatkonvertierung | Konvertierung | PEM ↔ DER ↔ PKCS#7 |
| Selbstsigniertes Zertifikat | Generierung | Selbstsigniertes Zertifikat und Schlüsselpaar (RSA / EC / Ed25519) via WebCrypto |
| Von einer CA signieren | Generierung | Stellt ein Zertifikat von einer bestehenden CA aus: neues Schlüsselpaar oder CSR, Leaf oder Intermediate, mit einsatzbereitem Fullchain |
Der Katalog lebt in einem einzigen Registry (src/lib/tools.ts), das die Navbar und das Raster der Startseite steuert.
Rund um die Werkzeuge selbst:
src/lib/pki/detect.ts) und öffnet sich im Werkzeug, das es liest./ setzt den Cursor ins Eingabefeld.Die Behauptung „es verlässt niemals deinen Browser" ist von innerhalb der Seite überprüfbar:
connect-src-Direktive der Seite aus der Richtlinie ausliest, mit der sie
ausgeliefert wurde, die Anzahl der Anfragen zählt, die seit dem Einfügen
Daten nach außen tragen könnten, und einen Live-Versuch ausführt, den der
Browser vor Ihnen verweigert, wobei die Direktive zitiert wird, die ihn
blockiert hat.Führen Sie immer ein gepinntes, unveränderliches Release-Tag (vX.Y.Z) aus,
niemals latest: Ein bewegliches Tag kann nicht auditiert oder
zurückgerollt werden. Für die stärkste Garantie pinnen Sie den Image-Digest
(...@sha256:...).
docker run -p 8080:8080 ghcr.io/youkyi/pki-toolbox:v2.2.0
Dann öffne http://localhost:8080.
Jedes Release wird unter demselben unveränderlichen vX.Y.Z-Tag veröffentlicht bei:
| Registry | Image |
|---|---|
| GitHub Container Registry | ghcr.io/youkyi/pki-toolbox |
| Docker Hub | youkyi/pki-toolbox |
docker pull ghcr.io/youkyi/pki-toolbox:v2.2.0 # or
docker pull youkyi/pki-toolbox:v2.2.0
services:
pki-toolbox:
image: ghcr.io/youkyi/pki-toolbox:v2.2.0
ports:
- '8080:8080'
restart: unless-stopped
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
read_only: true
docker compose up -d
Das Repository enthält eine vollständig gehärtete docker-compose.yml (schreibgeschütztes Root-Dateisystem, entfernte Capabilities, Speicher- und CPU-Limits); verwenden Sie diese Datei direkt anstelle dieses minimalen Beispiels.
Das Image wird auf Basis von nginx:alpine-slim erstellt, wiegt etwa 25 MB, lauscht auf dem nicht privilegierten Port 8080 und läuft als Nicht-Root-Benutzer.
Erfordert Node 24 (die Version, mit der das Image und CI gebaut werden) und pnpm 11. Die genaue pnpm-Version wird durch das Feld packageManager in package.json festgelegt, sodass corepack enable ausreicht, um sie zu erhalten.
pnpm install
pnpm dev # dev server on http://localhost:5173
pnpm test # unit tests, single run (Vitest)
pnpm test:unit # the same tests, in watch mode
pnpm test:e2e # end-to-end tests (Playwright)
pnpm test:e2e:ui # the same, in the Playwright UI
pnpm check # svelte-check / TypeScript
pnpm lint # Prettier + ESLint
pnpm format # rewrite files with Prettier
pnpm build # static build into ./build
pnpm preview # serve ./build locally
docker build -t pki-toolbox .
docker run -p 8080:8080 pki-toolbox