2026-03-24 21:33:48 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:37:38 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:37:38 +08:00
2026-03-24 21:33:48 +08:00
2026-03-24 21:33:48 +08:00

Step Admin

这是一个基于 SvelteKit + SQLite + step CLI 构建的轻量级证书管理后台系统。旨在用于方便管理由 step-ca 签发的内网设备客户端证书。

主要特性

  • 🛡️ 安全的 Admin 登录保护
  • 📊 仪表盘展示证书状态统计
  • 📄 发行、吊销设备证书并记录状态
  • 📦 一键下载 .crt 证书及直接导出 .p12 格式
  • 📝 记录基于 SQLite 的基础审计日志

🛠 开发环境搭建

1. 环境依赖

  1. Node.js >= 20
  2. step CLI 命令行工具(确保在环境变量 PATH 中可用)。
  3. 你的本地或远程的 step-ca 根 CA 已被系统信任(用于正常测试颁发与吊销)。

2. 克隆与安装

# 进入前端项目目录
cd step-web
# 安装依赖模块
npm install

3. 配置环境变量

复制环境模板并进行配置:

cp .env.example .env

此时你需要编辑 .env 文件:

  • APP_ADMIN_USERNAME:登录用的管理员用户名(如 admin
  • APP_ADMIN_PASSWORD_HASH:登录用的明文密码或哈希值(本示例暂时为弱校验)
  • APP_SESSION_SECRET:用于签署 Cookie避免被篡改
  • STEP_BIN:如果你本地安装的 step CLI 不在全局 PATH,请填写它的绝对路径(如 /usr/bin/step)。
  • STEP_CONTEXT:所使用的 step context 配置名称。
  • STEP_CA_URL:如果存在独立通信地址的主 ca 节点,请在此提供(如 https://ca.local:8443)。

4. 数据库初始化

初始化 SQLite 数据库及创建必要的表结构(certificates, audit_logs

npx tsx scripts/init-db.ts

如果系统提示未识别此命令,请先执行 npm i -g tsx。执行成功后,data/app.db 会被创建。

5. 启动本地开发服务

npm run dev

打开浏览器访问 http://localhost:5173,使用 .env 中的账密尝试登录和测试发证。


🚀 生产环境部署 (Node Adapter)

项目使用了 SvelteKit 的 @sveltejs/adapter-node,因此最终输出的是标准的 Node.js 应用进程。

1. 构建应用

在开发机或者 CI/CD 流程中执行:

npm run build

这会在 .svelte-kit/ 与最终的 build/ 目录下生成产物。

2. 服务器部署步骤

  1. 将项目源码(不包括 node_modules)和 build/ 目录上传到服务器(如 Linux Ubuntu/Debian 服务器)。
  2. 在服务器上准备与 .env 中相符的 step-ca 环境,确保 step 拥有足够的权限读写你设置的 STEP_OUTPUT_DIR
  3. 执行 npm install --omit=dev 仅安装生产依赖(主要为了安装适配器需要的依赖如 better-sqlite3)。
  4. 在服务运行前同样需要初始化数据库结构(如果你没上传旧有的 data/app.db),可以执行 npx tsx scripts/init-db.ts

3. 运行服务 (使用 PM2 / Systemd)

Systemd 配置示例

创建一个 Systemd 守护进程监控这个 Web 应用运行:

# /etc/systemd/system/step-admin.service
[Unit]
Description=Step CA Admin Web Dashboard
After=network.target

[Service]
Type=simple
User=your-node-user
# 切换到你的项目目录
WorkingDirectory=/var/www/step-admin
# 指定 NODE_ENV 与加载对应的环境变量文件
Environment="NODE_ENV=production"
EnvironmentFile=/var/www/step-admin/.env
# 启动执行 build 后的入口
ExecStart=/usr/bin/node build/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

执行命令启动:

sudo systemctl daemon-reload
sudo systemctl enable --now step-admin

默认它会在本机的 3000 端口启动服务。

4. 配置反向代理 (Caddy 示例)

建议Web 后台不直接走公网裸奔,通过 Caddy 代理加上 HTTPS 支持更为安全可靠:

admin.ca.example.com {
    reverse_proxy localhost:3000
}

重新加载 Caddysystemctl reload caddy


⚠️ 安全与使用须知

  • 此后台的核心功能是在服务器本地利用 child process 调用 step 客户端。务必注意权限控制,不要使用 root 用户运行这个后台服务。尽量给予一个权限克制的专门系统账户,并只开放该用户对于 step-ca 相关凭证目录(以及 STEP_OUTPUT_DIR)的存取权限。
  • Web 登录认证目前为简单实现,如用于复杂组织,请进一步对接 OIDC 或加强安全散列算法。
Description
No description provided
Readme 77 KiB
Languages
TypeScript 51.6%
Svelte 40.8%
Dockerfile 5.1%
JavaScript 1.3%
HTML 1.1%