Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pki-toolbox — Toolbox PKI lato client che decodifica artefatti X.509, CSR, chain, CRL, PKCS#7 e PKCS#12, visualizza ASN.1, converte formati e genera certificati self-signed nel browser. | Kitploit
Strumenti/GitHubGitHub/youkyi/pki-toolbox
Strumenti DifensiviAnalisi StaticaStrumenti di Crittografia/DecrittografiaSicurezza WebCrittografiaPrivacyUtilità e Framework
GitHubyoukyi/pki-toolbox

pki-toolbox

Toolbox PKI lato client che decodifica artefatti X.509, CSR, chain, CRL, PKCS#7 e PKCS#12, visualizza ASN.1, converte formati e genera certificati self-signed nel browser.

Vedi Repository
51135 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Sito web
Condividi

pki-toolbox

license: MIT

Una toolbox self-hosted, 100% client-side per artefatti PKI: certificati X.509, CSR PKCS#10, catene, CRL, bundle PKCS#7 e PKCS#12, ASN.1 grezzo, conversione di formato, fingerprint ed emissione di certificati. Un'alternativa rispettosa della privacy e self-hostable ai decoder di certificati online.

Demo live: https://pki-toolbox.youkyi.net (la demo è la stessa build statica che puoi self-hostare qui sotto; nulla di ciò che incolli lascia il tuo browser).

Ogni byte viene analizzato all'interno del tuo browser con @peculiar/x509 e pkijs. Nulla viene mai caricato, il backend distribuisce solo file statici. Non devi fidarti sulla parola: vedi Privacy verificabile qui sotto.

Strumenti

StrumentoCategoriaDescrizione
Decoder di certificatiDecodificaOgni campo di un certificato X.509: subject, issuer, validità, SAN, key usage, fingerprint
Decoder di CSRDecodificaSubject, chiave pubblica, algoritmo di firma ed estensioni richieste di una richiesta PKCS#10
Decoder di cateneDecodificaSuddivide un bundle PEM concatenato in una catena ordinata e verifica ogni collegamento issuer-to-subject
Decoder di CRLDecodificaVoci revocate, date e motivi di revoca
Decoder PKCS#7DecodificaOgni certificato trasportato da un bundle PKCS#7 / CMS
Decoder PKCS#12DecodificaApre file .p12 / .pfx protetti da password
FingerprintIspezioneSHA-1 / SHA-256 / SHA-512 del DER
Visualizzatore ASN.1IspezioneAlbero tag/length/value espandibile di qualsiasi artefatto DER
Conversione di formatoConversionePEM ↔ DER ↔ PKCS#7
Certificato self-signedGenerazioneCertificato self-signed e coppia di chiavi (RSA / EC / Ed25519) tramite WebCrypto
Firma da una CAGenerazioneEmette un certificato da una CA esistente: nuova coppia di chiavi o CSR, leaf o intermediate, con fullchain pronta all'uso

Il catalogo vive in un unico registry (src/lib/tools.ts) che guida la navbar e la griglia della home.

Attorno agli strumenti stessi:

  • Incolla qualsiasi cosa nella home page. L'artefatto viene riconosciuto dai suoi byte (etichetta PEM o header DER, vedi src/lib/pki/detect.ts) e si apre nello strumento che lo legge.
  • Un artefatto nello strumento sbagliato lo segnala e propone quello corretto, trasferendone il contenuto. Il passaggio avviene in memoria, mai tramite URL, così resta fuori da file di cronologia, log dei proxy e sincronizzazioni dei bookmark.
  • "Stesso artefatto in" sotto un risultato lo porta agli altri strumenti che lo leggono, così un solo incolla risponde a più domande.
  • Una banda di verdetto risponde alla domanda per cui lo strumento esiste prima di qualsiasi riga di dettaglio, e i valori che finiscono citati in un ticket si copiano con un click.
  • Ogni strumento accetta un artefatto incollato o un file caricato, e include un input di esempio per provarlo senza averne uno. / posiziona il cursore nell'input.

Privacy verificabile

L'affermazione "non lascia mai il tuo browser" è verificabile dall'interno della pagina:

  • Ogni casella di input include un pannello Verify che rilegge la direttiva connect-src della pagina dalla policy con cui è stata servita, conta le richieste in grado di trasportare dati all'esterno da quando hai incollato, ed esegue un tentativo live che il browser rifiuta davanti a te, citando la direttiva che lo ha bloccato.
  • Una chiave privata incollata viene nominata e velata: la casella dice cosa contiene e che non ha lasciato la pagina, con Clear it e Show it anyway. Nulla viene decodificato, trasmesso o memorizzato.
  • Apri la scheda network del tuo browser mentre decodifichi un certificato: non vedrai una singola richiesta.

Eseguirlo

Esegui sempre un tag di release fissato e immutabile (vX.Y.Z), mai latest: un tag mobile non può essere verificato né ripristinato. Per la garanzia più forte, fissa il digest dell'immagine (...@sha256:...).

root@kitploit:~
docker run -p 8080:8080 ghcr.io/youkyi/pki-toolbox:v2.2.0

Poi apri http://localhost:8080.

Immagini pubbliche

Ogni release è pubblicata, sotto lo stesso tag immutabile vX.Y.Z, su:

RegistryImmagine
GitHub Container Registryghcr.io/youkyi/pki-toolbox
Docker Hubyoukyi/pki-toolbox
root@kitploit:~
docker pull ghcr.io/youkyi/pki-toolbox:v2.2.0   # or
docker pull youkyi/pki-toolbox:v2.2.0

Self-host con Docker Compose

root@kitploit:~
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
root@kitploit:~
docker compose up -d

Il repository include un docker-compose.yml completamente rafforzato (filesystem root in sola lettura, capability rimosse, limiti di memoria e CPU); usa direttamente quel file invece di questo esempio minimale.

L'immagine è costruita da nginx:alpine-slim, pesa circa 25 MB, ascolta sulla porta non privilegiata 8080 e gira come utente non-root.

Sviluppo locale

Richiede Node 24 (la versione con cui l'immagine e la CI compilano) e pnpm 11. La versione esatta di pnpm è fissata dal campo packageManager di package.json, quindi corepack enable è sufficiente per ottenerla.

root@kitploit:~
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

Costruire l'immagine Docker

root@kitploit:~
docker build -t pki-toolbox .
docker run -p 8080:8080 pki-toolbox

Come funziona

  • SvelteKit 2 + TypeScript, compilato con adapter-static in puro HTML/JS: ogni route è prerenderizzata e non c'è runtime Node in produzione.
  • TailwindCSS per lo styling, sul design system youkyi: light di default, dark come tema distintivo (la scelta è persistita).
  • Tutto il parsing vive in funzioni pure e testabili sotto src/lib/pki/, senza import Svelte: parse.ts, chain.ts, crl.ts, pkcs7.ts, pkcs12.ts, asn1.ts, convert.ts, format.ts, pem.ts, oids.ts, detect.ts, generate.ts e sign.ts. Ogni route sotto src/routes/ è un sottile shell UI attorno a esse.
  • @peculiar/x509 v2 costruisce i suoi oggetti tramite tsyringe, che richiede un polyfill dei metadata Reflect lato consumer, quindi @abraham/reflection viene importato prima di esso in ogni modulo che usa la libreria.
  • PKCS#7 e PKCS#12 passano attraverso pkijs, il cui engine Web Crypto è registrato una volta in src/lib/pki/engine.ts.
  • Gli unit test vivono in tests/pki/ (Vitest) e i test browser in e2e/ (Playwright). Le fixture sono root pubbliche reali (ISRG Root X1/X2) più una catena EC e una CSR generate, vedi scripts/generate-fixtures.mjs.

Postura di sicurezza

  • Nessuna uscita di rete dall'app. La Content-Security-Policy è emessa da SvelteKit come tag <meta> con connect-src 'none'; nginx aggiunge frame-ancestors 'none', X-Frame-Options, X-Content-Type-Options, Referrer-Policy: no-referrer, una Permissions-Policy restrittiva e gli header di isolamento cross-origin. La demo Vercel invia lo stesso set di header (vedi vercel.json).
  • Limiti su input ostili. Ogni decoder rifiuta un input superiore a 4 MB, e il walker ASN.1 è limitato in numero di nodi e profondità di annidamento, così un artefatto malformato non può bloccare la scheda.
  • Runtime rafforzato. nginx gira come utente non-root sulla porta 8080; il docker-compose.yml incluso aggiunge un filesystem root in sola lettura, cap_drop: ALL, no-new-privileges e limiti di risorse.
  • Supply chain. Entrambe le immagini base sono fissate a digest immutabili mantenuti aggiornati da Renovate. La CI fallisce su un finding HIGH/CRITICAL correggibile, sia sul repository (trivy fs) sia sull'immagine appena costruita, che viene anche rifiutata quando il suo OS base è end-of-life, così un'immagine vulnerabile non viene mai pubblicata. Le licenze sono scansionate in un passaggio separato e non bloccante.
  • Accessibilità. L'interfaccia soddisfa WCAG 2.2 AA.

Versioning e release

Questo progetto segue il Semantic Versioning e i Conventional Commits. Le modifiche rilevanti sono registrate in CHANGELOG.md. Le regole di contribuzione sono in CONTRIBUTING.md.

Creare una release

  1. In CHANGELOG.md, rinomina l'intestazione ## [Unreleased] con la nuova versione e la data odierna, ad es. ## [1.2.3] - 2026-06-01, aggiungi sopra una nuova ## [Unreleased] vuota, e aggiorna i riferimenti ai link in fondo al file.
  2. Aggiorna "version" in package.json allo stesso numero.
  3. Fai commit su main (un conventional commit, ad es. chore(release): 1.2.3) e push.
  4. Tagga il commit e pusha il tag:
    root@kitploit:~
    git tag -a v1.2.3 -m "pki-toolbox v1.2.3"
    git push origin v1.2.3
    

La pipeline

Lint, unit test e test end-to-end girano a ogni push. Gli stadi di scan, build e release provengono dai componenti condivisi YouKyi-Infra/ci-infrastructure/ci-catalog (trivy-scan, docker-build, gitlab-release), fissati per versione in .gitlab-ci.yml.

Un tag vX.Y.Z esegue l'intera catena: scan, build dell'immagine, scan dell'immagine, push di vX.Y.Z sul registry GitLab e sui mirror pubblici (ghcr.io, Docker Hub), poi una GitLab Release le cui note sono la sezione ## [X.Y.Z] corrispondente estratta da CHANGELOG.md (una sezione vuota fa fallire il job invece di pubblicare note vuote).

Un push su main esegue la stessa pipeline meno lo stadio di release, e il job dell'immagine gira solo quando è cambiato un file che influisce sulla build, così un push di soli docs o config non ricostruisce l'immagine.

Le dipendenze sono mantenute aggiornate da Renovate, che estende il preset condiviso Renovate-Bot/renovate-config (vedi renovate.json).

Licenza

MIT

Scarica lo strumento