
Boîte à outils PKI côté client qui décode les artefacts X.509, CSR, chaîne, CRL, PKCS#7 et PKCS#12, visualise l'ASN.1, convertit les formats et génère des certificats auto-signés dans le navigateur.
Une boîte à outils auto-hébergée, 100 % côté client, pour les artefacts PKI : certificats X.509, CSR PKCS#10, chaînes, CRL, bundles PKCS#7 et PKCS#12, ASN.1 brut, conversion de format, empreintes et émission de certificats. Une alternative respectueuse de la vie privée et auto-hébergeable aux décodeurs de certificats en ligne.
Démo en ligne : https://pki-toolbox.youkyi.net (la démo est le même build statique que vous pouvez auto-héberger ci-dessous ; rien de ce que vous collez ne quitte votre navigateur).
Chaque octet est analysé à l'intérieur de votre navigateur avec @peculiar/x509 et pkijs. Rien n'est jamais téléversé, le backend ne sert que des fichiers statiques. Vous n'êtes pas obligé de nous croire sur parole : voir Confidentialité vérifiable ci-dessous.
| Outil | Catégorie | Description |
|---|---|---|
| Décodeur de certificat | Décodage | Tous les champs d'un certificat X.509 : sujet, émetteur, validité, SAN, usage de clé, empreintes |
| Décodeur de CSR | Décodage | Sujet, clé publique, algorithme de signature et extensions demandées d'une requête PKCS#10 |
| Décodeur de chaîne | Décodage | Découpe un bundle PEM concaténé en une chaîne ordonnée et vérifie chaque lien émetteur-vers-sujet |
| Décodeur de CRL | Décodage | Entrées révoquées, dates et motifs de révocation |
| Décodeur PKCS#7 | Décodage | Chaque certificat porté par un bundle PKCS#7 / CMS |
| Décodeur PKCS#12 | Décodage | Ouvre les fichiers .p12 / .pfx protégés par mot de passe |
| Empreintes | Inspection | SHA-1 / SHA-256 / SHA-512 du DER |
| Visualiseur ASN.1 | Inspection | Arbre tag/longueur/valeur dépliable de tout artefact DER |
| Conversion de format | Conversion | PEM ↔ DER ↔ PKCS#7 |
| Certificat auto-signé | Génération | Certificat auto-signé et paire de clés (RSA / EC / Ed25519) via WebCrypto |
| Signer depuis une CA | Génération | Émet un certificat depuis une CA existante : nouvelle paire de clés ou CSR, feuille ou intermédiaire, avec une fullchain prête à l'emploi |
Le catalogue vit dans un registre unique (src/lib/tools.ts) qui pilote la barre de navigation et la grille d'accueil.
Autour des outils eux-mêmes :
src/lib/pki/detect.ts) et s'ouvre dans l'outil qui le lit./ place le curseur dans le champ de saisie.L'affirmation « cela ne quitte jamais votre navigateur » est vérifiable depuis l'intérieur de la page :
connect-src de la page elle-même, issue de la politique avec
laquelle elle a été servie, compte les requêtes susceptibles d'exfiltrer des
données depuis votre collage, et exécute une tentative en direct que le
navigateur refuse devant vous, en citant la directive qui l'a bloquée.Exécutez toujours un tag de release épinglé et immuable (vX.Y.Z), jamais latest : un tag
mobile ne peut être audité ni annulé. Pour la garantie la plus forte, épinglez le
digest de l'image (...@sha256:...).
docker run -p 8080:8080 ghcr.io/youkyi/pki-toolbox:v2.2.0
Puis ouvrez http://localhost:8080.
Chaque version est publiée, sous le même tag immuable vX.Y.Z, sur :
| Registre | 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
Le dépôt fournit un fichier docker-compose.yml entièrement durci (système de fichiers racine en lecture seule, capacités supprimées, limites de mémoire et de CPU) ; utilisez ce fichier directement plutôt que cet exemple minimal.
L'image est construite à partir de nginx:alpine-slim, pèse environ 25 Mo, écoute sur le port non privilégié 8080 et s'exécute en tant qu'utilisateur non-root.
Nécessite Node 24 (la version avec laquelle l'image et la CI sont construites) et pnpm 11.
La version exacte de pnpm est épinglée par le champ packageManager de
package.json, donc corepack enable suffit pour l'obtenir.
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