55 lines
2.1 KiB
Markdown
55 lines
2.1 KiB
Markdown
# 密钥管理说明
|
||
|
||
**密钥文件路径**:`/opt/nac/services/nac-admin/.env`
|
||
|
||
## 必要密钥列表
|
||
|
||
| 环境变量 | 说明 | 示例值 |
|
||
|----------|------|--------|
|
||
| `NAC_MYSQL_URL` | MySQL 连接字符串(nac_id 数据库)| `mysql://root:password@localhost:3306/nac_id` |
|
||
| `NAC_MONGO_URL` | MongoDB 连接字符串(知识引擎数据库)| `mongodb://root:password@localhost:27017/nac_knowledge_engine?authSource=admin` |
|
||
| `NAC_JWT_SECRET` | JWT 签名密钥(至少32位随机字符串)| `<随机生成>` |
|
||
|
||
## .env 文件格式
|
||
|
||
```bash
|
||
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
|
||
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
|
||
NAC_JWT_SECRET=<生产环境随机密钥>
|
||
```
|
||
|
||
## 密钥管理最佳实践
|
||
|
||
1. **不要将密钥写入 systemd 服务文件的 `Environment=` 行**,应使用 `EnvironmentFile=` 指向 `.env` 文件
|
||
2. **`.env` 文件权限**应设置为 `600`(仅 root 可读):`chmod 600 /opt/nac/services/nac-admin/.env`
|
||
3. **定期轮换 JWT_SECRET**:每90天更换一次,更换后需要重启服务(所有用户需重新登录)
|
||
4. **MongoDB 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
|
||
5. **MySQL 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
|
||
|
||
## 密钥迁移步骤(从 systemd 内联迁移到 .env 文件)
|
||
|
||
```bash
|
||
# 1. 创建 .env 文件
|
||
cat > /opt/nac/services/nac-admin/.env << 'EOF'
|
||
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
|
||
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
|
||
NAC_JWT_SECRET=<生产环境随机密钥>
|
||
EOF
|
||
|
||
# 2. 设置文件权限
|
||
chmod 600 /opt/nac/services/nac-admin/.env
|
||
chown root:root /opt/nac/services/nac-admin/.env
|
||
|
||
# 3. 修改 systemd 服务文件,移除内联密钥,添加 EnvironmentFile
|
||
# 编辑 /etc/systemd/system/nac-admin.service
|
||
# 删除所有 Environment=NAC_* 行
|
||
# 添加 EnvironmentFile=/opt/nac/services/nac-admin/.env
|
||
|
||
# 4. 重载并重启
|
||
systemctl daemon-reload
|
||
systemctl restart nac-admin
|
||
|
||
# 5. 验证服务正常
|
||
systemctl status nac-admin
|
||
```
|