
Клиентский инструментарий PKI, который декодирует артефакты X.509, CSR, цепочки, CRL, PKCS#7 и PKCS#12, просматривает ASN.1, конвертирует форматы и генерирует самоподписанные сертификаты в браузере.
Самостоятельно размещаемый, на 100 % клиентский набор инструментов для артефактов PKI: сертификаты X.509, CSR PKCS#10, цепочки, CRL, пакеты PKCS#7 и PKCS#12, необработанный ASN.1, преобразование форматов, отпечатки и выпуск сертификатов. Уважающая приватность, самостоятельно размещаемая замена онлайн-декодерам сертификатов.
Живая демонстрация: https://pki-toolbox.youkyi.net (демонстрация — это та же статическая сборка, которую вы можете разместить самостоятельно, как описано ниже; всё, что вы вставляете, не покидает ваш браузер).
Каждый байт разбирается внутри вашего браузера с помощью @peculiar/x509 и pkijs. Ничего никогда не загружается на сервер, бэкенд лишь отдаёт статические файлы. Вам не нужно верить нам на слово: см. Проверяемая приватность ниже.
| Инструмент | Категория | Описание |
|---|---|---|
| Декодер сертификатов | Декодирование | Все поля сертификата X.509: субъект, издатель, срок действия, SAN, использование ключа, отпечатки |
| Декодер CSR | Декодирование | Субъект, открытый ключ, алгоритм подписи и запрошенные расширения запроса PKCS#10 |
| Декодер цепочки | Декодирование | Разбивает объединённый пакет PEM на упорядоченную цепочку и проверяет каждую связь издатель-субъект |
| Декодер CRL | Декодирование | Отозванные записи, даты и причины отзыва |
| Декодер PKCS#7 | Декодирование | Каждый сертификат, содержащийся в пакете PKCS#7 / CMS |
| Декодер PKCS#12 | Декодирование | Открывает защищённые паролем файлы .p12 / .pfx |
| Отпечатки | Инспекция | SHA-1 / SHA-256 / SHA-512 от DER |
| Просмотр ASN.1 | Инспекция | Раскрываемое дерево тег/длина/значение для любого артефакта DER |
| Преобразование форматов | Преобразование | PEM ↔ DER ↔ PKCS#7 |
| Самоподписанный сертификат | Генерация | Самоподписанный сертификат и пара ключей (RSA / EC / Ed25519) через WebCrypto |
| Подпись от CA | Генерация | Выпускает сертификат от существующего CA: новая пара ключей или CSR, конечный или промежуточный, с готовой к использованию полной цепочкой |
Каталог хранится в едином реестре (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 # или
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 (корневая файловая система только для чтения, отброшенные возможности, ограничения памяти и CPU); используйте этот файл напрямую, а не этот минимальный пример.
Образ собран из 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