π‘ Summary
A web-based application for managing X.509 digital certificates and PKI infrastructure.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); filesystem read/write scope and path traversal. Run with least privilege and audit before enabling in production.
PKI Manager
A modern, web-based Public Key Infrastructure management application for securely generating, issuing, managing, and revoking X.509 digital certificates.
Overview
PKI Manager provides complete control over your Private Key Infrastructure without relying on external certificate authorities. Perfect for enterprises, home labs, and development environments that demand full control over their security infrastructure.
Key Highlights
- Self-Hosted PKI: Create and manage your own root Certificate Authorities
- Multi-Type Certificates: Server (TLS/SSL), Client Auth, S/MIME Email, Code Signing
- Secure Key Management: Integration with Cosmian KMS for secure key storage
- Bulk Operations: CSV-based bulk certificate creation and batch operations
- Modern UI: React 19 with light/dark theme support and responsive design
- Type-Safe: End-to-end TypeScript with tRPC for API type safety
Screenshots
Dashboard
Monitor your PKI at a glance with real-time statistics and expiration tracking.
Certificate Authority Management
Create and manage self-signed root CAs with flexible configuration options.
Certificate Management
Issue, manage, and revoke certificates with comprehensive control.
Bulk Operations
Efficient batch certificate creation and management.
Features
Certificate Authority Management
- β Create self-signed root Certificate Authorities
- β Configurable subject fields (CN, O, OU, C, ST, L)
- β Key algorithm selection (RSA-2048, RSA-4096)
- β Flexible validity periods (1-30 years)
- β CA revocation with reason tracking
- β Export in multiple formats (PEM, CRT, DER, CER)
Certificate Issuance & Management
- β Server Certificates - HTTPS/TLS for web servers and APIs
- β Client Certificates - Client authentication and mTLS
- β Email (S/MIME) - Email encryption and signing
- β Code Signing - Software and code signing
- β Subject Alternative Names (DNS, IP Address, Email)
- β Advanced key algorithms (RSA-2048/4096, ECDSA-P256/P384)
- β Certificate renewal with same parameters
- β Revocation with standard reasons (keyCompromise, superseded, etc.)
- β Comprehensive certificate details view
Export & Download
- β Multiple formats: PEM, CRT, DER, CER
- β Certificate chains (PEM Chain)
- β PKCS#7 (P7B)
- β PKCS#12 with private key (PFX, P12) - password protected
- β Java KeyStore (JKS)
- β Batch download (all formats as ZIP)
- β Security warnings for private key exports
Bulk Operations
- β CSV-based bulk certificate creation
- β Flexible field mapping with optional parameters
- β SAN auto-detection (email, IP, DNS)
- β Batch download multiple certificates
- β Bulk renewal for expiring certificates
- β Batch revocation with reason
- β Multi-select deletion
Monitoring & Alerts
- β Real-time dashboard with PKI statistics
- β Expiration tracking with visual indicators
- β "Expiring Soon" widget (configurable threshold)
- β Color-coded status badges (active, revoked, expired)
- β Automatic status updates based on validity periods
Search & Filtering
- β Search by Common Name or SAN
- β Filter by issuing CA (with persistence)
- β Filter by status (active/revoked/expired)
- β Filter by certificate type
- β Sortable tables with instant results
Security
- β Cosmian KMS integration for secure key storage
- β Private keys never stored unencrypted locally
- β Password-protected private key exports
- β Audit logging for all operations
- β Revocation tracking with detailed reasons
- β Secure key pair generation (RSA, ECDSA)
User Experience
- β Modern, responsive UI with card-based layout
- β Light/Dark theme with system detection
- β Sample data generators for quick testing
- β Form validation with helpful error messages
- β Contextual action buttons
- β Real-time status updates
Architecture
This is a monorepo project with two main packages:
pki-manager/
βββ backend/ # Node.js/Fastify API server
βββ frontend/ # React 19 SPA
βββ assets/ # Screenshots and images
βββ tests/ # E2E screenshot tests
Technology Stack
Backend
- Framework: Fastify 5.2 (high-performance HTTP server)
- API Layer: tRPC v11 (end-to-end type safety)
- Database: SQLite with better-sqlite3 (embedded, portable)
- ORM: Drizzle ORM 0.36 (type-safe SQL)
- Validation: Zod 3.24 (schema validation)
- KMS: Cosmian KMS (secure key management)
- Testing: Vitest 2.1
- Runtime: Node.js 20+
Frontend
- Framework: React 19.2
- Routing: TanStack Router 1.133 (file-based, type-safe)
- State Management: TanStack Query 5.90 (server state)
- API Client: tRPC 11.0 (type-safe RPC)
- Styling: Tailwind CSS 4.1 (utility-first)
- UI Components: shadcn/ui (Radix UI primitives)
- Icons: Lucide React, FontAwesome
- Build Tool: Vite 7.1
Testing
- E2E: Playwright 1.56 (screenshot automation)
Prerequisites
- Node.js >= 20.0.0
- pnpm >= 9.0.0
- Cosmian KMS instance (for secure key storage)
Getting Started
1. Installation
# Install dependencies pnpm install
2. Environment Configuration
# Copy backend environment template cp backend/.env.example backend/.env # Edit backend/.env with your configuration: # - Database path # - Cosmian KMS endpoint and authentication # - Server port (default: 3000)
3. Database Setup
# Run migrations cd backend pnpm db:migrate
4. Start Development Servers
# Start both backend and frontend (from root) pnpm dev
This will start:
- Backend API at http://localhost:3000
- Frontend at http://localhost:5173
5. Build for Production
# Build both packages pnpm build # Start production servers cd backend && pnpm start # Backend cd frontend && pnpm preview # Frontend preview
Available Scripts
Root (Workspace)
pnpm dev # Start both backend and frontend in dev mode pnpm build # Build both packages for production pnpm test # Run tests in all packages pnpm typecheck # Type check all packages pnpm lint # Lint all packages pnpm clean # Clean all build artifacts and node_modules pnpm test:screenshots # Run Playwright screenshot tests
Backend
pnpm dev # Start dev server with hot reload pnpm build # Build for production pnpm start # Start production server pnpm test # Run Vitest tests pnpm db:generate # Generate Drizzle migrations pnpm db:migrate # Run database migrations pnpm db:studio # Open Drizzle Studio (DB GUI)
Frontend
pnpm dev # Start Vite dev server pnpm build # Build for production pnpm preview # Preview production build pnpm lint # Run ESLint
Project Structure
pki-manager/
βββ backend/
β βββ src/
β β βββ server.ts # Fastify server entry point
β β βββ trpc/
β β β βββ router.ts # Main tRPC router
β β β βββ schemas.ts # Zod validation schemas
β β β βββ procedures/ # API endpoints by domain
β β β βββ ca.ts # CA management
β β β βββ certificate.ts # Certificate operations
β β β βββ dashboard.ts # Dashboard stats
β β β βββ crl.ts # CRL management
β β βββ db/
β β β βββ schema.ts # Drizzle ORM schema
β β β βββ index.ts # Database
Pros
- Self-hosted for full control
- Supports multiple certificate types
- Modern UI with responsive design
- Type-safe API interactions
Cons
- Requires setup of Cosmian KMS
- Might be complex for beginners
- Limited community support
- Dependency on Node.js and pnpm
Related Skills
terraform-engineer
AβPowerful, but the setup might scare off the impatient.β
pytorch
SβIt's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.β
agno
SβIt promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author oriolrius.
