oriolrius/pki-manager-web

GitHub: oriolrius/pki-manager-web

一个基于 Web 的自托管 PKI 管理系统,提供 X.509 证书和 SSH 证书的完整生命周期管理及安全密钥存储。

Stars: 16 | Forks: 3

# PKI Manager [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/) [![pnpm](https://img.shields.io/badge/pnpm-%3E%3D9.0.0-orange.svg)](https://pnpm.io/) ## 概述 PKI Manager 提供对您私有密钥基础设施的完全控制,无需依赖外部证书颁发机构。非常适合需要对其安全基础设施进行完全控制的企业、家庭实验室和开发环境。 ### 核心亮点 - **自托管 PKI**:创建并管理您自己的根证书颁发机构 - **多类型证书**:服务器 (TLS/SSL)、客户端认证、S/MIME 邮件、代码签名 - **安全的密钥管理**:与 Cosmian KMS 集成以实现安全的密钥存储 - **批量操作**:基于 CSV 的批量证书创建和批处理操作 - **OIDC 身份验证**:支持 Keycloak、Auth0、Okta、Azure AD 的与提供商无关的身份验证 - **现代化 UI**:React 19,支持浅色/深色主题和响应式设计 - **类型安全**:结合 tRPC 实现端到端的 TypeScript API 类型安全 ## 截图 ### 仪表板 通过实时统计和过期跟踪,一目了然地监控您的 PKI。
Dashboard Light Mode

Dashboard - Light Mode

Dashboard Dark Mode

Dashboard - Dark Mode

### 证书颁发机构管理 创建并管理具有灵活配置选项的自签名根 CA。
CA List

Certificate Authorities List

Create CA

Create New CA

CA Details

CA Details View

CA Sample Data

Sample Data Generation

### 证书管理 签发、管理和吊销证书,提供全面的控制。
Certificates List

Certificates List with Filters

Issue Certificate

Issue New Certificate

Certificate with SANs

Subject Alternative Names (SANs)

Certificate Details

Certificate Details & Export

### 批量操作 高效的批量证书创建和管理。
Bulk Creation

Bulk Certificate Creation (CSV)

Bulk Selection

Bulk Operations (Download, Renew, Revoke)

## 功能 ### 证书颁发机构管理 - ✅ 创建自签名根证书颁发机构 - ✅ 可配置的主题字段 (CN, O, OU, C, ST, L) - ✅ 密钥算法选择 (RSA-2048, RSA-4096) - ✅ 灵活的有效期(1-30 年) - ✅ 带有原因跟踪的 CA 吊销 - ✅ 多种格式导出 (PEM, CRT, DER, CER) ### 证书签发与管理 - ✅ **服务器证书** - 用于 Web 服务器和 API 的 HTTPS/TLS - ✅ **客户端证书** - 客户端身份验证和 mTLS - ✅ **邮件 (S/MIME)** - 邮件加密和签名 - ✅ **代码签名** - 软件和代码签名 - ✅ 主题备用名称 (DNS, IP 地址, 邮箱) - ✅ 高级密钥算法 (RSA-2048/4096, ECDSA-P256/P384) - ✅ 使用相同参数进行证书续期 - ✅ 带有标准原因的吊销(密钥泄露、被替代等) - ✅ 全面的证书详情视图 ### 导出与下载 - ✅ 多种格式:PEM, CRT, DER, CER - ✅ 证书链 (PEM Chain) - ✅ PKCS#7 (P7B) - ✅ 带有私钥的 PKCS#12 (PFX, P12) - 密码保护 - ✅ Java KeyStore (JKS) - ✅ 批量下载(所有格式打包为 ZIP) - ✅ 私钥导出的安全警告 ### 批量操作 - ✅ 基于 CSV 的批量证书创建 - ✅ 带有可选参数的灵活字段映射 - ✅ SAN 自动检测(邮件、IP、DNS) - ✅ 批量下载多个证书 - ✅ 针对即将过期的证书进行批量续期 - ✅ 带有原因的批量吊销 - ✅ 多选删除 ### 监控与警报 - ✅ 带有 PKI 统计信息的实时仪表板 - ✅ 带有可视化指示器的过期跟踪 - ✅ “即将过期”小部件(可配置阈值) - ✅ 颜色编码的状态徽章(活跃、已吊销、已过期) - ✅ 基于有效期的自动状态更新 ### 搜索与过滤 - ✅ 按通用名称或 SAN 搜索 - ✅ 按签发 CA 过滤(带持久化) - ✅ 按状态过滤(活跃/已吊销/已过期) - ✅ 按证书类型过滤 - ✅ 可排序的表格,即时显示结果 ### 安全 - ✅ 集成 Cosmian KMS 以实现安全的密钥存储 - ✅ 私钥绝不在本地以未加密形式存储 - ✅ 受密码保护的私钥导出 - ✅ 所有操作的审计日志 - ✅ 带有详细原因的吊销跟踪 - ✅ 安全的密钥对生成 (RSA, ECDSA) ### 身份验证 - ✅ OpenID Connect (OIDC) 身份验证 - ✅ 与提供商无关 (Keycloak, Auth0, Okta, Azure AD) - ✅ 使用 PKCE 的授权码流程 - ✅ 基于角色的访问控制(管理员/用户角色) - ✅ 通过 JWKS 进行 JWT 验证 - ✅ 静默 token 续期 ### 用户体验 - ✅ 现代化、响应式的 UI,采用卡片式布局 - ✅ 浅色/深色主题,带有系统检测功能 - ✅ 用于快速测试的示例数据生成器 - ✅ 带有有用错误信息的表单验证 - ✅ 上下文操作按钮 - ✅ 实时状态更新 ### SSH 证书管理器 一个独立的 OpenSSH 证书颁发机构位于 **`/ssh`** 下:双 (用户 + 主机)CA、主机注册、带有 principals 的用户证书签发以及 KRL 吊销 —— 全程支持复制粘贴,提供每主机部署包和引导清单。 **初次使用?从这里开始:** - [工作原理(概念)](docs/ssh/concept.md) — 双重 CA,两个信任 方向,principal 位于两处的规则,两级吊销。 - [操作员快速入门](docs/ssh/operator-quickstart.md) — 从零到首次登录。 - [主机和客户端设置](docs/ssh/setup.md) — 设置 SSH 服务器和客户端。 - [自动化 API 合同](docs/ssh-api-contract.md) · [Ansible 角色](ansible/README.md) ## 架构 这是一个包含两个主要包的 **monorepo** 项目: ``` pki-manager/ ├── backend/ # Node.js/Fastify API server ├── frontend/ # React 19 SPA ├── assets/ # Screenshots and images └── tests/ # E2E screenshot tests ``` ## 技术栈 ### 后端 - **框架**:Fastify 5.2(高性能 HTTP 服务器) - **API 层**:tRPC v11(端到端类型安全) - **数据库**:结合 better-sqlite3 的 SQLite(嵌入式,便携) -**ORM**:Drizzle ORM 0.36(类型安全的 SQL) - **验证**:Zod 3.24(schema 验证) - **KMS**:Cosmian KMS(安全的密钥管理) - **测试**:Vitest 2.1 - **运行时**:Node.js 20+ ### 前端 - **框架**:React 19.2 - **路由**:TanStack Router 1.133(基于文件,类型安全) - **状态管理**:TanStack Query 5.90(服务器状态) - **API 客户端**:tRPC 11.0(类型安全的 RPC) - **样式**:Tailwind CSS 4.1(实用优先) - **UI 组件**:shadcn/ui (Radix UI 原语) - **图标**:Lucide React, FontAwesome - **构建工具**:Vite 7.1 ### 测试 - **端到端 (E2E)**:Playwright 1.56(截图自动化) ## 快速开始 ``` # 1. 启动 Cosmian KMS cd kms && docker compose up -d # 2. 启动 Keycloak(用于身份验证) cd keycloak && docker compose up -d # 3. 安装依赖项 pnpm install # 4. 配置并运行 cp backend/.env.example backend/.env cp frontend/.env.example frontend/.env cd backend && pnpm db:migrate pnpm dev # from root ``` - **前端**:http://localhost:5173 - **后端 API**:http://localhost:3000 - **Cosmian KMS**:http://localhost:42998 - **Keycloak**:http://localhost:42997 (admin/admin) **测试用户**:使用 `admin`/`admin` 或 `user`/`user` 登录 有关详细的设置,请参阅 [DEVELOPMENT.md](DEVELOPMENT.md) 和 [身份验证指南](backlog/docs/doc-004%20-%20OIDC-Authentication-Setup-Guide.md)。 ## 常见用例 ### 企业 - 用于企业网络的内部 CA 层次结构 - 用于 VPN/Wi-Fi 的员工证书 - S/MIME 邮件加密 - 用于软件分发的代码签名 ### 开发 - 用于开发的本地 HTTPS 证书 - API 身份验证测试 - 微服务 mTLS - 容器证书管理 ### 家庭实验室 - 保护内部服务 (Proxmox, TrueNAS) - 家庭自动化 HTTPS - 私有 VPN 服务器证书 - IoT 设备身份验证 ## API 文档 应用程序使用 tRPC 进行类型安全的 API 通信。关键 endpoint: ### 仪表板 - `dashboard.stats` - 获取 PKI 统计信息 - `dashboard.expiringSoon` - 获取即将过期的 CA/证书 ### 证书颁发机构 - `ca.list` - 列出所有 CA - `ca.getById` - 获取 CA 详情 - `ca.create` - 创建新 CA - `ca.revoke` - 吊销 CA - `ca.delete` - 删除 CA - `ca.download` - 下载 CA 证书 ### 证书 - `certificate.list` - 列出证书(带过滤器) - `certificate.getById` - 获取证书详情 - `certificate.issue` - 签发新证书 - `certificate.bulkIssue` - 批量创建证书 - `certificate.renew` - 续期证书 - `certificate.revoke` - 吊销证书 - `certificate.delete` - 删除证书 - `certificate.download` - 下载证书 所有 endpoint 均具有完全的类型安全,并支持自动 TypeScript 推断。 ## 安全注意事项 - 私钥安全地存储在 Cosmian KMS 中 - 对所有私钥导出进行密码保护 - 定期监控证书过期情况 - 使用强密钥算法(针对敏感用例使用 RSA-4096 或 ECDSA-P384) - 立即吊销受损的证书 - 定期备份您的数据库 - 确保对 KMS endpoint 的访问安全 - 在生产环境中使用 HTTPS ## 许可证 本项目基于 Apache License 2.0 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 相关项目 | 项目 | 描述 | |---------|-------------| | [pki-manager-cli](https://github.com/oriolrius/pki-manager-cli) | 用于 PKI Manager 的 Python CLI 工具 - 从命令行管理证书 | | [pki-manager-skill](https://github.com/oriolrius/pki-manager-skill) | 用于 AI 辅助证书管理的 Claude Code 技能 | | [pki-manager-ansible](https://github.com/oriolrius/pki-manager-ansible) | 用于证书管理的 Ansible Collection ([Galaxy](https://galaxy.ansible.com/ui/repo/published/oriolrius/pki_manager/)) | ## 附加资源 - [开发指南](DEVELOPMENT.md) - 设置、脚本和开发工作流 - [身份验证指南](backlog/docs/doc-004%20-%20OIDC-Authentication-Setup-Guide.md) - OIDC 设置和提供商配置 - [Keycloak 设置](keycloak/README.md) - 本地 Keycloak 开发环境 - [功能文档](FEATURES.md) - 详细的功能文档 - [Cosmian KMS 文档](https://docs.cosmian.com/) - [X.509 证书标准 (RFC 5280)](https://datatracker.ietf.org/doc/html/rfc5280) - [PKCS 标准](https://en.wikipedia.org/wiki/PKCS) **使用 ❤️ 和现代 Web 技术构建**
标签:GNU通用公共许可证, MITM代理, Node.js, PKI管理, React, Syscalls, X.509证书, 特征检测, 自动化攻击, 请求拦截