secubox-openwrt/package/secubox/luci-app-ksm-manager/README.zh.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00

539 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[English](README.md) | [Francais](README.fr.md) | [中文](README.zh.md)
# LuCI App - 密钥存储管理器 (KSM)
**版本:** 0.4.0
**最后更新:** 2025-12-28
**状态:** 活跃
适用于 OpenWrt 的集中式加密密钥管理系统,支持 Nitrokey 和 YubiKey 设备的硬件安全模块 (HSM)。
## 概述
密钥存储管理器为 OpenWrt 上的加密密钥、证书、机密和 SSH 密钥管理提供全面的解决方案。它支持基于软件的密钥存储和使用 USB 安全令牌的硬件支持加密操作。
### 功能特性
- **加密密钥管理**
- 生成 RSA、ECDSA 和 Ed25519 密钥
- 支持 PEM、DER 和 PKCS#12 格式的密钥导入/导出
- 支持 shred 的安全删除
- 密钥元数据跟踪和组织
- **硬件安全模块 (HSM) 支持**
- 自动检测 Nitrokey 和 YubiKey 设备
- 芯片上密钥生成
- PIN 管理和安全
- 硬件支持的加密操作
- **证书管理**
- 生成证书签名请求 (CSR)
- 导入 SSL/TLS 证书
- 证书链验证
- 过期警报(< 30
- **机密存储**
- 加密存储 API 密钥密码和令牌
- 分类的机密组织
- 自动机密轮换可选
- 访问审计日志
- **SSH 密钥管理**
- 生成 SSH 密钥对RSAECDSAEd25519
- 将密钥部署到远程主机
- 支持 SSH 证书
- 公钥导出和共享
- **审计日志**
- 全面的活动跟踪
- 导出日志为 CSV 格式
- 可过滤的审计时间线
- 用户操作责任追溯
## 安装
### 依赖项
该模块需要以下软件包
- `luci-base`
- `rpcd`
- `openssl-util`
- `gnupg2`
- `nitropy`用于 Nitrokey 支持
- `yubikey-manager`用于 YubiKey 支持
- `opensc`智能卡框架
- `libccid`USB CCID 驱动程序
- `pcscd`PC/SC 守护程序
### 从软件包安装
```bash
# 将软件包传输到路由器
scp luci-app-ksm-manager_*.ipk root@192.168.1.1:/tmp/
# 在路由器上安装
ssh root@192.168.1.1
opkg update
opkg install /tmp/luci-app-ksm-manager_*.ipk
# 重启服务
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
```
### 从源代码编译
```bash
# 在 OpenWrt SDK 中
make package/luci-app-ksm-manager/compile V=s
make package/luci-app-ksm-manager/install
# 软件包将位于 bin/packages/*/base/
```
## 初始设置
### 1. 安装 HSM 驱动程序(如果使用硬件令牌)
对于 Nitrokey 设备
```bash
opkg install nitropy python3-pip
```
对于 YubiKey 设备
```bash
opkg install yubikey-manager
```
### 2. 配置 USB 权限
确保您的用户可以访问 USB 设备
```bash
# 为 Nitrokey 添加 udev 规则
cat > /etc/udev/rules.d/60-nitrokey.rules <<EOF
SUBSYSTEM=="usb", ATTR{idVendor}=="20a0", ATTR{idProduct}=="42b1", MODE="0660", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="20a0", ATTR{idProduct}=="42b2", MODE="0660", GROUP="plugdev"
EOF
# 为 YubiKey 添加 udev 规则
cat > /etc/udev/rules.d/70-yubikey.rules <<EOF
SUBSYSTEM=="usb", ATTR{idVendor}=="1050", MODE="0660", GROUP="plugdev"
EOF
# 重新加载 udev 规则
udevadm control --reload-rules
```
### 3. 初始化密钥库
访问 LuCI Web 界面
1. 导航到 **安全 -> 密钥存储管理器 -> 概览**
2. 密钥库将在首次访问时自动初始化
3. **安全 -> 密钥存储管理器 -> 设置** 中配置参数
## 使用指南
### 管理密钥
#### 生成新密钥
1. 进入 **密钥** 选项卡
2. 选择密钥类型RSAECDSA Ed25519
3. 选择密钥大小RSA 推荐 4096
4. 输入用于识别的标签
5. 可选设置用于加密的密码短语
6. 点击 **生成**
#### 导入现有密钥
1. 进入 **密钥** 选项卡
2. 滚动到 **导入现有密钥** 部分
3. 输入标签
4. 选择格式PEMDER PKCS#12
5. 粘贴密钥数据或上传文件
6. 如果已加密输入密码短语
7. 点击 **导入**
#### 导出密钥
1. 在表格中找到密钥
2. 点击 **导出**
3. 选择格式以及是否包含私钥
4. 点击 **导出** 进行下载
### 使用硬件安全模块
#### 初始化 HSM 设备
1. 通过 USB 连接 Nitrokey YubiKey
2. 进入 **HSM 设备** 选项卡
3. 点击 **扫描设备**
4. 选择检测到的设备
5. 点击 **初始化**
6. 设置管理员 PIN6-32 个字符
7. 设置用户 PIN6-32 个字符
**重要:** 安全存储 PIN如果忘记需要恢复出厂设置
#### 在 HSM 上生成密钥
1. 进入 **HSM 设备** 选项卡
2. 选择已初始化的设备
3. 点击 **生成密钥**
4. 选择密钥类型和大小
5. 输入标签
6. 在提示时提供用户 PIN
在芯片上生成的密钥永远不会离开硬件设备
### 证书管理
#### 生成证书签名请求 (CSR)
1. 进入 **证书** 选项卡
2. 选择现有密钥或生成新密钥
3. 输入通用名称 (CN)例如 `example.com`
4. 可选添加组织国家
5. 点击 **生成**
6. 复制 CSR 并提交给证书颁发机构
#### 导入证书
1. CA 收到签名证书后
2. 进入 **证书** 选项卡
3. 选择关联的密钥
4. 粘贴证书数据PEM 格式
5. 可选包含证书链
6. 点击 **导入**
#### 验证证书
1. 在表格中找到证书
2. 点击 **验证**
3. 检查有效性状态链验证和过期时间
### 管理机密
#### 存储机密
1. 进入 **机密** 选项卡
2. 输入描述性标签例如 "GitHub API 密钥"
3. 选择类别API 密钥密码令牌等
4. 输入机密值
5. 如需要启用自动轮换
6. 点击 **添加**
#### 检索机密
1. 在表格中找到机密
2. 点击 **查看**
3. **警告:** 访问将被记录
4. 复制机密到剪贴板
5. 机密将在 30 秒后自动隐藏
#### 轮换机密
1. 在表格中找到机密
2. 点击 **轮换**
3. 输入新的机密值
4. 确认轮换
### SSH 密钥管理
#### 生成 SSH 密钥对
1. 进入 **SSH 密钥** 选项卡
2. 输入标签
3. 选择密钥类型推荐 Ed25519
4. 添加可选注释
5. 点击 **生成**
6. 复制公钥进行部署
#### 部署到远程主机
1. 从列表中选择 SSH 密钥
2. 点击部署部分
3. 输入目标主机名/IP
4. 输入目标用户名
5. 点击 **部署**
或者手动将公钥复制到远程主机的 `~/.ssh/authorized_keys`
### 审计日志
#### 查看活动
1. 进入 **审计日志** 选项卡
2. 查看按时间顺序的活动时间线
3. 按日期用户操作或资源过滤
4. 日志每 15 秒自动刷新
#### 导出日志
1. 点击 **导出日志 (CSV)**
2. CSV 文件将下载包含所有审计条目
3. 在电子表格软件中打开进行分析
### 设置
#### 配置密钥库
1. 进入 **设置** 选项卡
2. 设置密钥库路径默认`/etc/ksm/keystore.db`
3. 配置自动锁定超时
4. 启用/禁用自动备份
5. 设置备份计划cron 格式
#### 审计设置
- 启用/禁用审计日志
- 设置保留期默认90
- 选择日志级别InfoWarningError
#### 告警设置
- 证书过期阈值默认30
- 机密轮换提醒
- HSM 断开连接告警
#### 备份和恢复
**创建备份:**
1. 点击 **创建加密备份**
2. 输入强密码短语
3. 确认密码短语
4. 下载加密存档
**恢复备份:**
1. 点击 **从备份恢复**
2. 选择备份文件
3. 输入备份密码短语
4. 确认恢复将覆盖现有数据
## 安全最佳实践
### 密钥管理
1. **使用强密码短语:** 最少 16 个字符包含大小写字母数字和符号
2. **密钥大小:** 使用 4096 RSA Ed25519 以获得最大安全性
3. **安全删除:** 删除敏感密钥时始终启用"安全擦除"
4. **定期轮换:** 90 天轮换 SSH 密钥和机密
5. **硬件存储:** 尽可能使用 HSM 存储生产密钥
### HSM 使用
1. **PIN 复杂性:** 使用不同的管理员和用户 PIN最少 8 个字符
2. **PIN 存储:** PIN 存储在密码管理器中而不是设备上
3. **备份令牌:** 保留备份 HSM 设备用于灾难恢复
4. **物理安全:** 不使用时妥善保管 HSM 设备
5. **重试限制:** HSM PIN 尝试失败后会锁定 - 做好相应计划
### 证书管理
1. **监控过期:** 30 天内过期的证书启用告警
2. **验证链:** 部署前始终验证证书链
3. **提前续期:** 在过期前 2 周续期证书
4. **吊销:** 保持吊销程序文档化
5. **中间 CA** 将中间证书与终端实体证书一起存储
### 机密存储
1. **访问日志:** 定期查看审计日志以发现未授权访问
2. **最小权限:** 仅向必要用户授予机密访问权限
3. **自动轮换:** API 密钥和令牌启用
4. **加密:** 机密使用 AES-256-GCM 加密
5. **备份加密:** 始终使用强密码短语加密备份
## 故障排除
### HSM 未检测到
**问题:** Nitrokey YubiKey 未出现在设备列表中
**解决方案:**
1. 检查 USB 连接 - 尝试不同的端口
2. 验证驱动程序已安装`lsusb` 应显示设备
3. 检查权限`ls -la /dev/hidraw*`
4. 重启 pcscd`/etc/init.d/pcscd restart`
5. 检查 `/etc/udev/rules.d/` 中的 udev 规则
### 权限被拒绝错误
**问题:** 无法访问 /dev/hidraw* 或密钥库文件
**解决方案:**
1. 将用户添加到 `plugdev` `usermod -a -G plugdev www-data`
2. 检查文件权限`ls -la /etc/ksm/`
3. 验证 RPCD 以正确用户运行
4. 检查 `/usr/share/rpcd/acl.d/` 中的 ACL 配置
### 密钥库已锁定
**问题:** 访问密钥时出现"密钥库已锁定"错误
**解决方案:**
1. 通过 设置 -> 密钥库 -> 解锁 进行解锁
2. 检查自动锁定超时设置
3. 验证密钥库文件存在:`/etc/ksm/keystore.db`
4. 检查磁盘空间:`df -h /etc/ksm`
### 证书验证失败
**问题:** 证书链验证错误
**解决方案:**
1. 确保已导入中间证书
2. 检查证书顺序(终端实体 -> 中间 -> 根)
3. 验证证书未过期
4. 检查系统时钟是否正确:`date`
5. 更新 CA 包:`opkg update && opkg upgrade ca-bundle`
### 备份恢复失败
**问题:** 无法从备份恢复
**解决方案:**
1. 验证备份文件完整性(检查文件大小)
2. 确保密码短语正确
3. 检查可用磁盘空间
4. 在其他系统上尝试备份进行测试
5. 如果备份损坏,请联系支持
## API 参考
### RPC 方法
RPCD 后端(`luci.ksm-manager`)提供 22 个方法:
**状态和信息:**
- `status()` - 获取服务状态
- `get_info()` - 获取系统信息
**HSM 管理:**
- `list_hsm_devices()` - 列出已连接的 HSM 设备
- `get_hsm_status(serial)` - 获取 HSM 设备状态
- `init_hsm(serial, admin_pin, user_pin)` - 初始化 HSM
- `generate_hsm_key(serial, key_type, key_size, label)` - 在 HSM 上生成密钥
**密钥管理:**
- `list_keys()` - 列出所有密钥
- `generate_key(type, size, label, passphrase)` - 生成新密钥
- `import_key(label, key_data, format, passphrase)` - 导入密钥
- `export_key(id, format, include_private, passphrase)` - 导出密钥
- `delete_key(id, secure_erase)` - 删除密钥
**证书管理:**
- `generate_csr(key_id, subject_dn, san_list)` - 生成 CSR
- `import_certificate(key_id, cert_data, chain)` - 导入证书
- `list_certificates()` - 列出证书
- `verify_certificate(cert_id)` - 验证证书
**机密管理:**
- `store_secret(label, secret_data, category, auto_rotate)` - 存储机密
- `retrieve_secret(secret_id)` - 检索机密
- `list_secrets()` - 列出机密
- `rotate_secret(secret_id, new_secret_data)` - 轮换机密
**SSH 管理:**
- `generate_ssh_key(label, key_type, comment)` - 生成 SSH 密钥
- `deploy_ssh_key(key_id, target_host, target_user)` - 部署 SSH 密钥
**审计:**
- `get_audit_logs(limit, offset, filter_type)` - 获取审计日志
## 文件位置
- **密钥库数据库:** `/etc/ksm/keystore.db`
- **配置:** `/etc/ksm/config.json`
- **密钥:** `/etc/ksm/keys/`
- **证书:** `/etc/ksm/certs/`
- **机密:** `/etc/ksm/secrets/`
- **审计日志:** `/var/log/ksm-audit.log`
- **RPCD 后端:** `/usr/libexec/rpcd/luci.ksm-manager`
## 开发
### 项目结构
```
luci-app-ksm-manager/
├── Makefile
├── README.md
├── htdocs/luci-static/resources/
│ ├── view/ksm-manager/
│ │ ├── overview.js
│ │ ├── keys.js
│ │ ├── hsm.js
│ │ ├── certificates.js
│ │ ├── secrets.js
│ │ ├── ssh.js
│ │ ├── audit.js
│ │ └── settings.js
│ └── ksm-manager/
│ └── api.js
└── root/
└── usr/
├── libexec/rpcd/
│ └── luci.ksm-manager
└── share/
├── luci/menu.d/
│ └── luci-app-ksm-manager.json
└── rpcd/acl.d/
└── luci-app-ksm-manager.json
```
### 运行测试
```bash
# 验证 shell 脚本
shellcheck root/usr/libexec/rpcd/luci.ksm-manager
# 验证 JSON 文件
jsonlint root/usr/share/luci/menu.d/luci-app-ksm-manager.json
jsonlint root/usr/share/rpcd/acl.d/luci-app-ksm-manager.json
# 测试 RPCD 方法
ubus call luci.ksm-manager status
ubus call luci.ksm-manager list_keys
```
## 贡献
欢迎贡献!请:
1. 遵循 OpenWrt 编码标准
2. 提交前在实际硬件上测试
3. 为新功能更新文档
4. 包含验证测试
## 许可证
Copyright (C) 2025 SecuBox Project
根据 Apache License, Version 2.0 授权
## 支持
- **Issues** [GitHub Issues](https://github.com/secubox/luci-app-ksm-manager/issues)
- **文档:** [SecuBox Wiki](https://wiki.secubox.org)
- **论坛:** [OpenWrt Forum - SecuBox](https://forum.openwrt.org/tag/secubox)
## 更新日志
### 版本 1.0.0 (2025-01-XX)
- 初始版本
- 完整 HSM 支持Nitrokey、YubiKey
- 加密密钥管理
- 带 CSR 生成的证书管理
- 加密的机密存储
- SSH 密钥管理和部署
- 全面的审计日志
- 备份和恢复功能