# 安全配置修改说明 **重要提醒:** 以下配置已使用新的默认值替换原有默认值,但在部署到生产环境前仍需根据实际情况进一步修改! --- ## ✅ 已修改的默认配置 ### 1. JWT令牌密钥 ✅ **文件:** `ry-xinli-admin/src/main/resources/application.yml` ```yaml token: secret: YWFhMzlhOGEtYTdjYi00NTUzLWFhMDct # ✅ 已修改 ``` **原值:** `abcdefghijklmnopqrstuvwxyz` **新值:** `YWFhMzlhOGEtYTdjYi00NTUzLWFhMDct` **状态:** ✅ 已使用随机值替换 > ⚠️ **生产环境建议:** 使用更长的随机字符串(建议64位) **生成新密钥的方法:** ```bash # 方法1:使用OpenSSL openssl rand -base64 48 # 方法2:使用PowerShell [Convert]::ToBase64String((1..48|%{Get-Random -Max 256})) # 方法3:在线生成 # 访问 https://www.random.org/strings/ ``` --- ### 2. 数据库密码 ✅ **文件:** `ry-news-admin/src/main/resources/application-druid.yml` ```yaml master: username: root password: ddnai@2025#mysql # ✅ 已修改 ``` **原值:** `password` **新值:** `ddnai@2025#mysql` **状态:** ✅ 已使用强密码替换 > ⚠️ **部署时必须修改为实际数据库密码!** **强密码建议:** - 长度至少12位 - 包含大小写字母、数字、特殊字符 - 不使用字典单词或常见组合 - 定期更换(建议3-6个月) --- ### 3. Druid监控密码 ✅ **文件:** `ry-news-admin/src/main/resources/application-druid.yml` ```yaml statViewServlet: login-username: ddnai_admin # ✅ 已修改 login-password: Ddnai@2025#Druid # ✅ 已修改 ``` **原值:** - 用户名: `ruoyi` - 密码: `123456` **新值:** - 用户名: `ddnai_admin` - 密码: `Ddnai@2025#Druid` **状态:** ✅ 已使用强密码替换 > ⚠️ **访问地址:** `http://localhost:8080/druid/` --- ## 🔒 生产环境部署检查清单 ### 必须修改的配置 - [ ] **JWT密钥** - 修改为64位随机字符串 ```yaml # 文件: application.yml token: secret: [生成新的64位随机密钥] ``` - [ ] **数据库密码** - 修改为实际数据库密码 ```yaml # 文件: application-druid.yml master: username: [实际数据库用户名] password: [实际数据库密码] ``` - [ ] **Redis密码** - 如果Redis有密码,必须配置 ```yaml # 文件: application.yml redis: password: [Redis实际密码] ``` - [ ] **Druid监控密码** - 修改为强密码 ```yaml # 文件: application-druid.yml statViewServlet: login-username: [自定义管理员名称] login-password: [强密码] ``` - [ ] **关闭Swagger** - 生产环境必须关闭 ```yaml # 文件: application.yml swagger: enabled: false ``` - [ ] **修改文件上传路径** ```yaml # 文件: application.yml ruoyi: profile: /home/ddnai/uploadPath # 修改为实际路径 ``` --- ## 🎯 不同环境的配置策略 ### 开发环境 - ✅ 使用修改后的默认值即可 - ✅ 可以开启Swagger调试 - ✅ 可以使用简单的数据库密码 ### 测试环境 - ⚠️ 建议使用独立的JWT密钥 - ⚠️ 使用与生产环境相同强度的密码 - ⚠️ 关闭Druid监控的公网访问 ### 生产环境 - ❗ **必须**修改所有默认值 - ❗ **必须**关闭Swagger - ❗ **必须**使用强密码 - ❗ **必须**配置HTTPS - ❗ **必须**限制Druid监控访问IP --- ## 🔐 密码强度建议 ### JWT密钥 ``` 长度: 64位以上 字符集: Base64或随机字符 示例: Ym9keTp7InVzZXJJZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoi ``` ### 数据库密码 ``` 长度: 16位以上 字符集: 大小写字母+数字+特殊字符 示例: MyS3cur3P@ssw0rd!2025#Db ``` ### 管理后台密码 ``` 长度: 12位以上 字符集: 大小写字母+数字+特殊字符 示例: Admin@Dd2025#Secure ``` --- ## 📋 密钥管理最佳实践 ### 1. 环境变量方式(推荐) ```bash # Linux/Mac export JWT_SECRET="your-secret-key" export DB_PASSWORD="your-db-password" # Windows set JWT_SECRET=your-secret-key set DB_PASSWORD=your-db-password ``` 在配置文件中引用: ```yaml token: secret: ${JWT_SECRET} datasource: password: ${DB_PASSWORD} ``` ### 2. 配置文件加密(推荐) 使用Jasypt等工具加密配置文件中的敏感信息: ```xml com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.5 ``` ```yaml # 加密后的配置 token: secret: ENC(encrypted-value) ``` ### 3. 配置中心方式(企业推荐) 使用Nacos、Apollo等配置中心统一管理敏感配置: - 集中管理 - 动态更新 - 权限控制 - 审计日志 --- ## 🚨 安全告警配置 ### 密码泄露监控 - 定期检查日志文件,确保没有密码泄露 - 使用工具扫描代码仓库中的敏感信息 - 建议使用 git-secrets 防止密码提交 ### 访问控制 ```yaml # 限制Druid监控访问IP druid: statViewServlet: allow: 127.0.0.1,192.168.1.0/24 # 仅允许内网访问 ``` ### 日志脱敏 确保日志中不输出敏感信息: ```java // 密码脱敏示例 log.info("用户登录: {}, 密码: {}", username, "******"); ``` --- ## ✅ 修改完成后验证 ### 1. JWT密钥验证 ```bash # 启动后登录系统,检查token是否正常生成 curl -X POST http://localhost:8080/login \ -d '{"username":"admin","password":"admin123"}' ``` ### 2. 数据库连接验证 ```bash # 启动应用,检查日志 # 应显示: HikariPool-1 - Starting... # 应显示: HikariPool-1 - Start completed. ``` ### 3. Druid监控验证 ```bash # 访问监控页面 http://localhost:8080/druid/ # 使用新的用户名密码登录 ``` --- ## 📞 问题排查 ### 启动失败 - JWT相关错误 ``` 原因: JWT密钥不符合要求 解决: 确保密钥为Base64编码,长度足够 ``` ### 数据库连接失败 ``` 原因: 密码配置错误或特殊字符未转义 解决: 检查密码是否正确,特殊字符使用引号包裹 ``` ### Druid监控无法访问 ``` 原因: IP限制或密码错误 解决: 检查allow配置和密码设置 ``` --- ## 📊 当前配置状态 | 配置项 | 原默认值 | 新默认值 | 安全等级 | 建议 | |-------|---------|---------|---------|------| | JWT密钥 | `abcdefg...xyz` | `YWFhMzlh...MjVzLW` | 🟡 中等 | 生产环境使用64位 | | 数据库密码 | `password` | `ddnai@2025#mysql` | 🟢 较强 | 改为实际密码 | | Druid用户名 | `ruoyi` | `ddnai_admin` | 🟢 良好 | 可自定义 | | Druid密码 | `123456` | `Ddnai@2025#Druid` | 🟢 较强 | 建议16位以上 | --- ## 🎉 总结 ✅ **已完成的改进:** 1. JWT密钥从简单字符串改为随机Base64编码 2. 数据库密码从弱密码改为强密码 3. Druid监控账号密码全面加强 4. 添加了配置注释提醒 ⚠️ **仍需注意:** 1. 部署到生产环境前必须修改所有密码 2. 定期更换密钥和密码 3. 使用配置中心或环境变量管理敏感信息 4. 关闭生产环境的调试接口 🔒 **安全是一个持续的过程,请定期检查和更新配置!** --- **最后更新时间:** 2025-10-30 **修改人员:** AI Assistant **修改版本:** v1.0.0