
صندوق أدوات PKI من جانب العميل يقوم بفك ترميز عناصر X.509 و CSR و chain و CRL و PKCS#7 و PKCS#12، ويعرض ASN.1، ويحوّل الصيغ، ويولّد شهادات موقّعة ذاتيًا في المتصفح.
صندوق أدوات مستضاف ذاتيًا ويعمل بالكامل على جانب العميل لمكوّنات PKI: شهادات X.509، وطلبات CSR من نوع PKCS#10، والسلاسل، وقوائم CRL، وحزم PKCS#7 وPKCS#12، وبيانات ASN.1 الخام، وتحويل الصيغ، والبصمات، وإصدار الشهادات. بديل يحترم الخصوصية وقابل للاستضافة الذاتية لمفككات ترميز الشهادات عبر الإنترنت.
العرض التجريبي المباشر: https://pki-toolbox.youkyi.net (العرض التجريبي هو نفس البناء الثابت الذي يمكنك استضافته ذاتيًا أدناه؛ لا شيء مما تلصقه يغادر متصفحك).
يُحلَّل كل بايت داخل متصفحك باستخدام @peculiar/x509
وpkijs. لا يُرفَع أي شيء على الإطلاق،
والخادم الخلفي لا يقدّم سوى ملفات ثابتة. لا يلزمك أن تأخذ ذلك على الثقة: راجع
خصوصية قابلة للتحقق أدناه.
| الأداة | الفئة | الوصف |
|---|---|---|
| Certificate decoder | Decoding | كل حقل في شهادة X.509: الموضوع، والمُصدِر، والصلاحية، وSANs، واستخدام المفتاح، والبصمات |
| CSR decoder | Decoding | الموضوع، والمفتاح العام، وخوارزمية التوقيع، والامتدادات المطلوبة في طلب PKCS#10 |
| Chain decoder | Decoding | يقسّم حزمة PEM المتسلسلة إلى سلسلة مرتّبة ويتحقق من كل رابط بين المُصدِر والموضوع |
| CRL decoder | Decoding | الإدخالات المُبطَلة والتواريخ وأسباب الإبطال |
| PKCS#7 decoder | Decoding | كل شهادة تحملها حزمة PKCS#7 / CMS |
| PKCS#12 decoder | Decoding | يفتح ملفات .p12 / .pfx المحمية بكلمة مرور |
| Fingerprints | Inspection | SHA-1 / SHA-256 / SHA-512 لبيانات DER |
| ASN.1 viewer | Inspection | شجرة قابلة للتوسيع من الوسم/الطول/القيمة لأي مكوّن DER |
| Format conversion | Conversion | PEM ↔ DER ↔ PKCS#7 |
| Self-signed certificate | Generation | شهادة ذاتية التوقيع وزوج مفاتيح (RSA / EC / Ed25519) عبر WebCrypto |
| Sign from a CA | Generation | يصدر شهادة من CA موجودة: زوج مفاتيح جديد أو CSR، ورقة أو وسيطة، مع fullchain جاهزة للاستخدام |
يوجد الكتالوج في سجل واحد (src/lib/tools.ts) يقود شريط التنقل والشبكة الرئيسية.
وحول الأدوات نفسها:
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 مُحصّنًا بالكامل (نظام ملفات جذر
للقراءة فقط، وقدرات مُسقَطة، وحدود للذاكرة والمعالج)؛ استخدم هذا الملف
مباشرةً بدلًا من هذا المثال البسيط.
تُبنى الصورة من nginx:alpine-slim، وتزن نحو 25 ميغابايت، وتستمع على المنفذ
غير المميّز 8080 وتعمل بمستخدم غير جذر.
يتطلب Node 24 (الإصدار الذي تُبنى به الصورة وCI) وpnpm 11.
إصدار pnpm الدقيق مثبّت عبر حقل packageManager في
package.json، لذا يكفي 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،
generate.ts وsign.ts. كل مسار تحت src/routes/ هو واجهة مستخدم رقيقة
حولها.@peculiar/x509 v2 يبني كائناته عبر tsyringe، الذي يحتاج إلى
polyfill لبيانات Reflect الوصفية على جانب المستهلك، لذا يُستورد @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.