# 密钥管理说明 **密钥文件路径**:`/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 ```