Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pki-toolbox — Клиентский инструментарий PKI, который декодирует артефакты X.509, CSR, цепочки, CRL, PKCS#7 и PKCS#12, просматривает ASN.1, конвертирует форматы и генерирует самоподписанные сертификаты в браузере. | Kitploit
Инструменты/GitHubGitHub/youkyi/pki-toolbox
Оборонительные ИнструментыСтатический анализИнструменты шифрования/дешифрованияВеб-безопасностьКриптографияКонфиденциальностьУтилиты и фреймворки
GitHubyoukyi/pki-toolbox

pki-toolbox

Клиентский инструментарий PKI, который декодирует артефакты X.509, CSR, цепочки, CRL, PKCS#7 и PKCS#12, просматривает ASN.1, конвертирует форматы и генерирует самоподписанные сертификаты в браузере.

Репозиторий
51135 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Сайт
Поделиться

pki-toolbox

license: MIT

Самостоятельно размещаемый, на 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), который управляет навигационной панелью и домашней сеткой.

Вокруг самих инструментов:

  • Вставьте что угодно на главной странице. Артефакт распознаётся по своим байтам (метка PEM или заголовок DER, см. src/lib/pki/detect.ts) и открывается в инструменте, который его читает.
  • Артефакт в неподходящем инструменте сообщает об этом и предлагает правильный, перенося своё содержимое. Передача происходит в памяти, никогда через URL, поэтому она не попадает в файлы истории, логи прокси и синхронизацию закладок.
  • «Тот же артефакт в» под результатом переносит его в другие инструменты, которые его читают, так что одна вставка отвечает на несколько вопросов.
  • Полоса вердикта отвечает на вопрос, ради которого существует инструмент, до любой строки с деталями, а значения, которые попадают в тикет, копируются одним кликом.
  • Каждый инструмент принимает вставленный артефакт или загруженный файл и поставляется с примером входных данных, чтобы вы могли попробовать его без них. / помещает курсор в поле ввода.

Проверяемая приватность

Утверждение «это никогда не покидает ваш браузер» можно проверить прямо со страницы:

  • Каждое поле ввода содержит панель Verify, которая считывает собственную директиву connect-src страницы из политики, с которой она была отдана, подсчитывает запросы, способные вынести данные, с момента вашей вставки, и выполняет живую попытку, которую браузер отклоняет на ваших глазах, цитируя директиву, которая её заблокировала.
  • Вставленный приватный ключ называется и скрывается: поле сообщает, что оно содержит и что оно не покинуло страницу, с кнопками Clear it и Show it anyway. Ничего не декодируется, не передаётся и не сохраняется.
  • Откройте вкладку сети вашего браузера во время декодирования сертификата: вы не увидите ни одного запроса.

Запуск

Всегда запускайте закреплённый, неизменяемый тег релиза (vX.Y.Z), никогда latest: движущийся тег нельзя проверить или откатить. Для самой сильной гарантии закрепите дайджест образа (...@sha256:...).

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

Затем откройте http://localhost:8080.

Публичные образы

Каждый релиз публикуется под одним и тем же неизменяемым тегом vX.Y.Z в:

РеестрОбраз
GitHub Container Registryghcr.io/youkyi/pki-toolbox
Docker Hubyoukyi/pki-toolbox
root@kitploit:~
docker pull ghcr.io/youkyi/pki-toolbox:v2.2.0   # или
docker pull youkyi/pki-toolbox:v2.2.0

Самостоятельное размещение с 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

Репозиторий поставляется с полностью усиленным docker-compose.yml (корневая файловая система только для чтения, отброшенные возможности, ограничения памяти и CPU); используйте этот файл напрямую, а не этот минимальный пример.

Образ собран из nginx:alpine-slim, весит около 25 МБ, слушает непривилегированный порт 8080 и работает от непривилегированного пользователя.

Локальная разработка

Требуется Node 24 (версия, с которой собираются образ и CI) и pnpm 11. Точная версия pnpm закреплена полем packageManager в package.json, поэтому достаточно corepack enable.

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

Сборка образа Docker

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

Как это работает

  • SvelteKit 2 + TypeScript, собирается с adapter-static в чистый HTML/JS: каждый маршрут предварительно отрендерен, и в продакшене нет среды выполнения Node.
  • TailwindCSS для стилизации, на дизайн-системе youkyi: светлая по умолчанию, тёмная как фирменная тема (выбор сохраняется).
  • Весь разбор живёт в чистых, тестируемых функциях в 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/ — это тонкая оболочка UI вокруг них.
  • @peculiar/x509 v2 строит свои объекты через tsyringe, которому на стороне потребителя нужен полифилл метаданных Reflect, поэтому @abraham/reflection импортируется перед ним в каждом модуле, использующем библиотеку.
  • PKCS#7 и PKCS#12 проходят через pkijs, чей движок Web Crypto регистрируется один раз в src/lib/pki/engine.ts.
  • Модульные тесты живут в tests/pki/ (Vitest), а браузерные тесты в e2e/ (Playwright). Фикстуры — это реальные публичные корни (ISRG Root X1/X2) плюс сгенерированная цепочка EC и CSR, см. scripts/generate-fixtures.mjs.

Модель безопасности

  • Никакого сетевого исходящего трафика из приложения. Content-Security-Policy выдаётся SvelteKit как тег <meta> с connect-src 'none'; nginx добавляет frame-ancestors 'none', X-Frame-Options, X-Content-Type-Options, Referrer-Policy: no-referrer, ограничительную Permissions-Policy и заголовки кросс-доменной изоляции. Демонстрация на Vercel отправляет тот же набор заголовков (см. vercel.json).
  • Ограничения на враждебный ввод. Каждый декодер отклоняет ввод размером более 4 МБ, а обходчик ASN.1 ограничен по количеству узлов и глубине вложенности, поэтому некорректный артефакт не может подвесить вкладку.
  • Усиленная среда выполнения. nginx работает от непривилегированного пользователя на порту 8080; поставляемый docker-compose.yml добавляет корневую файловую систему только для чтения, cap_drop: ALL, no-new-privileges и ограничения ресурсов.
  • Цепочка поставок. Оба базовых образа закреплены по неизменяемым дайджестам, поддерживаемым в актуальном состоянии Renovate. CI завершается с ошибкой при исправимой находке уровня HIGH/CRITICAL как в репозитории (trivy fs), так и в только что собранном образе, который также отклоняется, если его базовая ОС достигла конца жизненного цикла, поэтому уязвимый образ никогда не публикуется. Лицензии сканируются в отдельном, неблокирующем проходе.
  • Доступность. Интерфейс соответствует WCAG 2.2 AA.

Версионирование и релизы

Этот проект следует семантическому версионированию и Conventional Commits. Значимые изменения записываются в CHANGELOG.md. Правила участия находятся в CONTRIBUTING.md.

Выпуск релиза

  1. В CHANGELOG.md переименуйте заголовок ## [Unreleased] в новую версию с сегодняшней датой, например ## [1.2.3] - 2026-06-01, добавьте свежий пустой ## [Unreleased] над ним и обновите ссылки внизу файла.
  2. Обновите "version" в package.json до того же номера.
  3. Закоммитьте в main (conventional commit, например chore(release): 1.2.3) и запушьте.
  4. Поставьте тег на коммит и запушьте тег:
    root@kitploit:~
    git tag -a v1.2.3 -m "pki-toolbox v1.2.3"
    git push origin v1.2.3
    

Конвейер

Линтинг, модульные тесты и сквозные тесты запускаются при каждом пуше. Этапы сканирования, сборки и релиза берутся из общих компонентов YouKyi-Infra/ci-infrastructure/ci-catalog (trivy-scan, docker-build, gitlab-release), закреплённых по версии в .gitlab-ci.yml.

Тег vX.Y.Z запускает всю цепочку: сканирование, сборку образа, сканирование образа, публикацию vX.Y.Z в реестр GitLab и в публичные зеркала (ghcr.io, Docker Hub), затем GitLab Release, примечания к которому — это соответствующий раздел ## [X.Y.Z], извлечённый из CHANGELOG.md (пустой раздел приводит к сбою задания, а не к публикации пустых примечаний).

Пуш в main запускает тот же конвейер без этапа релиза, а задание образа запускается только когда изменился файл, влияющий на сборку, поэтому пуш только документации или конфигурации не пересобирает образ.

Зависимости поддерживаются в актуальном состоянии с помощью Renovate, который расширяет общий пресет Renovate-Bot/renovate-config (см. renovate.json).

Лицензия

MIT

Скачать инструмент