
क्लाइंट-साइड PKI टूलबॉक्स जो X.509, CSR, chain, CRL, PKCS#7 और PKCS#12 आर्टिफैक्ट्स को डिकोड करता है, ASN.1 देखता है, फॉर्मेट कन्वर्ट करता है, और ब्राउज़र में सेल्फ-साइन्ड सर्टिफिकेट जनरेट करता है।
PKI आर्टिफैक्ट्स के लिए एक स्व-होस्टेड, 100% क्लाइंट-साइड टूलबॉक्स: X.509 प्रमाणपत्र, PKCS#10 CSR, चेन, CRL, PKCS#7 और PKCS#12 बंडल, रॉ ASN.1, फ़ॉर्मेट रूपांतरण, फ़िंगरप्रिंट और प्रमाणपत्र जारी करना। ऑनलाइन प्रमाणपत्र डिकोडर का गोपनीयता-सम्मान करने वाला, स्व-होस्ट करने योग्य विकल्प।
लाइव डेमो: https://pki-toolbox.youkyi.net (डेमो वही स्टैटिक बिल्ड है जिसे आप नीचे स्व-होस्ट कर सकते हैं; आप जो भी पेस्ट करते हैं वह आपके ब्राउज़र से बाहर नहीं जाता)।
हर बाइट आपके ब्राउज़र के अंदर @peculiar/x509
और pkijs के साथ पार्स की जाती है। कुछ भी कभी
अपलोड नहीं होता, बैकएंड केवल स्टैटिक फ़ाइलें परोसता है। आपको इसे
विश्वास पर लेने की ज़रूरत नहीं है: नीचे सत्यापन-योग्य गोपनीयता देखें।
| टूल | श्रेणी | विवरण |
|---|---|---|
| Certificate decoder | डिकोडिंग | X.509 प्रमाणपत्र का हर फ़ील्ड: subject, issuer, validity, SANs, key usage, फ़िंगरप्रिंट |
| CSR decoder | डिकोडिंग | PKCS#10 अनुरोध का subject, public key, signature algorithm और अनुरोधित extensions |
| Chain decoder | डिकोडिंग | एक संयुक्त PEM बंडल को क्रमबद्ध चेन में विभाजित करता है और हर issuer-to-subject लिंक सत्यापित करता है |
| CRL decoder | डिकोडिंग | निरस्त प्रविष्टियाँ, तिथियाँ और निरस्तीकरण कारण |
| PKCS#7 decoder | डिकोडिंग | PKCS#7 / CMS बंडल द्वारा ले जाया गया हर प्रमाणपत्र |
| PKCS#12 decoder | डिकोडिंग | पासवर्ड-संरक्षित .p12 / .pfx फ़ाइलें खोलता है |
| Fingerprints | निरीक्षण | DER के SHA-1 / SHA-256 / SHA-512 |
| ASN.1 viewer | निरीक्षण | किसी भी DER आर्टिफैक्ट का विस्तारणीय tag/length/value ट्री |
| Format conversion | रूपांतरण | PEM ↔ DER ↔ PKCS#7 |
| Self-signed certificate | जनरेशन | WebCrypto के माध्यम से स्व-हस्ताक्षरित प्रमाणपत्र और key pair (RSA / EC / Ed25519) |
| Sign from a CA | जनरेशन | मौजूदा CA से प्रमाणपत्र जारी करता है: नया key pair या CSR, leaf या intermediate, उपयोग-के-लिए-तैयार fullchain के साथ |
कैटलॉग एक ही रजिस्ट्री (src/lib/tools.ts) में रहता है जो
navbar और होम ग्रिड को चलाती है।
टूल्स के आसपास:
src/lib/pki/detect.ts) और इसे पढ़ने वाले टूल में खुलता है।/ कैरेट को इनपुट में रखता है।दावा "यह आपके ब्राउज़र से कभी बाहर नहीं जाता" पेज के अंदर से सत्यापन-योग्य है:
connect-src निर्देश को पढ़कर बताता है जिसके साथ इसे परोसा गया था, आपके पेस्ट करने के बाद से
डेटा बाहर ले जाने में सक्षम अनुरोधों की गिनती करता है, और एक लाइव प्रयास चलाता है जिसे
ब्राउज़र आपके सामने अस्वीकार कर देता है, उस निर्देश का हवाला देते हुए जिसने इसे रोका।हमेशा एक पिन किया गया, अपरिवर्तनीय रिलीज़ टैग (vX.Y.Z) चलाएँ, कभी latest नहीं: एक बदलता
टैग ऑडिट या रोलबैक नहीं किया जा सकता। सबसे मज़बूत गारंटी के लिए, इमेज डाइजेस्ट
(...@sha256:...) पिन करें।
docker run -p 8080:8080 ghcr.io/youkyi/pki-toolbox:v2.2.0
फिर http://localhost:8080 खोलें।
प्रत्येक रिलीज़, उसी अपरिवर्तनीय vX.Y.Z टैग के अंतर्गत, यहाँ प्रकाशित होती है:
| रजिस्ट्री | इमेज |
|---|---|
| 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
रिपॉज़िटरी एक पूरी तरह से हार्डन किया गया docker-compose.yml (read-only root
filesystem, dropped capabilities, memory और CPU सीमाएँ) देती है; इस न्यूनतम उदाहरण के बजाय
सीधे उस फ़ाइल का उपयोग करें।
इमेज nginx:alpine-slim से बनाई गई है, इसका वज़न लगभग 25 MB है, यह
गैर-विशेषाधिकार प्राप्त पोर्ट 8080 पर सुनता है और non-root उपयोगकर्ता के रूप में चलता है।
Node 24 (वह संस्करण जिसके साथ इमेज और CI बनाते हैं) और pnpm 11 आवश्यक है।
सटीक pnpm संस्करण package.json के packageManager फ़ील्ड द्वारा पिन किया गया है,
इसलिए इसे पाने के लिए corepack enable पर्याप्त है।
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
adapter-static के साथ सादे
HTML/JS में बनाया गया: हर रूट प्रीरेंडर होता है और प्रोडक्शन में कोई Node रनटाइम नहीं होता।src/lib/pki/ के अंतर्गत शुद्ध, परीक्षण-योग्य फ़ंक्शन्स में रहती है, बिना
किसी Svelte इम्पोर्ट के: parse.ts, chain.ts, crl.ts, pkcs7.ts, pkcs12.ts,
asn1.ts, convert.ts, format.ts, pem.ts, oids.ts, detect.ts,
और । के अंतर्गत प्रत्येक रूट उनके चारों ओर एक पतली UI
शेल है।connect-src 'none' के साथ एक <meta> टैग के रूप में उत्सर्जित किया जाता है; nginx
frame-ancestors 'none', X-Frame-Options, X-Content-Type-Options,
Referrer-Policy: no-referrer, एक प्रतिबंधात्मक Permissions-Policy और
cross-origin isolation हेडर जोड़ता है। Vercel डेमो वही हेडर सेट भेजता है
(देखें vercel.json)।docker-compose.yml एक read-only root filesystem, cap_drop: ALL,
no-new-privileges और संसाधन सीमाएँ जोड़ती है।यह प्रोजेक्ट Semantic Versioning और
Conventional Commits का पालन करता है। उल्लेखनीय परिवर्तन
CHANGELOG.md में दर्ज किए जाते हैं। योगदान नियम
CONTRIBUTING.md में रहते हैं।
CHANGELOG.md में, ## [Unreleased] शीर्षक को
आज की तारीख के साथ नए संस्करण में बदलें, जैसे ## [1.2.3] - 2026-06-01, इसके ऊपर एक
नया खाली ## [Unreleased] जोड़ें, और फ़ाइल के नीचे लिंक संदर्भ अपडेट करें।package.json में "version" को उसी संख्या में बंप करें।main पर कमिट करें (एक conventional commit, जैसे chore(release): 1.2.3) और
पुश करें।git tag -a v1.2.3 -m "pki-toolbox v1.2.3"
git push origin v1.2.3
Lint, यूनिट टेस्ट और end-to-end टेस्ट हर पुश पर चलते हैं। स्कैन, बिल्ड और
रिलीज़ चरण साझा YouKyi-Infra/ci-infrastructure/ci-catalog
घटकों (trivy-scan, docker-build, gitlab-release) से आते हैं, जो
.gitlab-ci.yml में संस्करण द्वारा पिन किए गए हैं।
एक vX.Y.Z टैग पूरी श्रृंखला चलाता है: स्कैन, इमेज बिल्ड, इमेज स्कैन, GitLab रजिस्ट्री और सार्वजनिक मिरर (ghcr.io, Docker
Hub) पर vX.Y.Z का पुश, फिर एक GitLab Release जिसके नोट्स CHANGELOG.md से निकाला गया
मेल खाता ## [X.Y.Z] अनुभाग हैं (एक खाली अनुभाग खाली नोट्स प्रकाशित करने के बजाय
जॉब को विफल कर देता है)।
main पर एक पुश रिलीज़ चरण के बिना वही पाइपलाइन चलाता है, और इमेज
जॉब केवल तब चलता है जब बिल्ड को प्रभावित करने वाली कोई फ़ाइल बदली हो, इसलिए केवल docs- या
config-पुश इमेज को फिर से नहीं बनाता।
निर्भरताएँ Renovate द्वारा अद्यतित रखी जाती हैं,
जो साझा Renovate-Bot/renovate-config प्रीसेट को एक्सटेंड करता है
(देखें renovate.json)।
generate.tssign.tssrc/routes/@peculiar/x509 v2 अपने ऑब्जेक्ट्स को tsyringe के माध्यम से बनाता है, जिसे उपभोक्ता पक्ष पर
Reflect metadata polyfill की आवश्यकता होती है, इसलिए पुस्तकालय का उपयोग करने वाले हर मॉड्यूल में
@abraham/reflection इससे पहले इम्पोर्ट किया जाता है।pkijs से होकर जाते हैं, जिसका Web Crypto इंजन
src/lib/pki/engine.ts में एक बार रजिस्टर किया जाता है।tests/pki/ (Vitest) में और ब्राउज़र टेस्ट e2e/
(Playwright) में रहते हैं। फ़िक्स्चर असली सार्वजनिक रूट्स (ISRG Root X1/X2) के साथ-साथ एक
जनरेट की गई EC चेन और CSR हैं, देखें scripts/generate-fixtures.mjs।trivy fs