7.1 KiB
7.1 KiB
安全配置修改说明
重要提醒: 以下配置已使用新的默认值替换原有默认值,但在部署到生产环境前仍需根据实际情况进一步修改!
✅ 已修改的默认配置
1. JWT令牌密钥 ✅
文件: ry-news-admin/src/main/resources/application.yml
token:
secret: YWFhMzlhOGEtYTdjYi00NTUzLWFhMDct # ✅ 已修改
原值: abcdefghijklmnopqrstuvwxyz
新值: YWFhMzlhOGEtYTdjYi00NTUzLWFhMDct
状态: ✅ 已使用随机值替换
⚠️ 生产环境建议: 使用更长的随机字符串(建议64位)
生成新密钥的方法:
# 方法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
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
statViewServlet:
login-username: ddnai_admin # ✅ 已修改
login-password: Ddnai@2025#Druid # ✅ 已修改
原值:
- 用户名:
ruoyi - 密码:
123456
新值:
- 用户名:
ddnai_admin - 密码:
Ddnai@2025#Druid
状态: ✅ 已使用强密码替换
⚠️ 访问地址:
http://localhost:8080/druid/
🔒 生产环境部署检查清单
必须修改的配置
-
JWT密钥 - 修改为64位随机字符串
# 文件: application.yml token: secret: [生成新的64位随机密钥] -
数据库密码 - 修改为实际数据库密码
# 文件: application-druid.yml master: username: [实际数据库用户名] password: [实际数据库密码] -
Redis密码 - 如果Redis有密码,必须配置
# 文件: application.yml redis: password: [Redis实际密码] -
Druid监控密码 - 修改为强密码
# 文件: application-druid.yml statViewServlet: login-username: [自定义管理员名称] login-password: [强密码] -
关闭Swagger - 生产环境必须关闭
# 文件: application.yml swagger: enabled: false -
修改文件上传路径
# 文件: 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. 环境变量方式(推荐)
# 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
在配置文件中引用:
token:
secret: ${JWT_SECRET}
datasource:
password: ${DB_PASSWORD}
2. 配置文件加密(推荐)
使用Jasypt等工具加密配置文件中的敏感信息:
<!-- 添加依赖 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
# 加密后的配置
token:
secret: ENC(encrypted-value)
3. 配置中心方式(企业推荐)
使用Nacos、Apollo等配置中心统一管理敏感配置:
- 集中管理
- 动态更新
- 权限控制
- 审计日志
🚨 安全告警配置
密码泄露监控
- 定期检查日志文件,确保没有密码泄露
- 使用工具扫描代码仓库中的敏感信息
- 建议使用 git-secrets 防止密码提交
访问控制
# 限制Druid监控访问IP
druid:
statViewServlet:
allow: 127.0.0.1,192.168.1.0/24 # 仅允许内网访问
日志脱敏
确保日志中不输出敏感信息:
// 密码脱敏示例
log.info("用户登录: {}, 密码: {}", username, "******");
✅ 修改完成后验证
1. JWT密钥验证
# 启动后登录系统,检查token是否正常生成
curl -X POST http://localhost:8080/login \
-d '{"username":"admin","password":"admin123"}'
2. 数据库连接验证
# 启动应用,检查日志
# 应显示: HikariPool-1 - Starting...
# 应显示: HikariPool-1 - Start completed.
3. Druid监控验证
# 访问监控页面
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位以上 |
🎉 总结
✅ 已完成的改进:
- JWT密钥从简单字符串改为随机Base64编码
- 数据库密码从弱密码改为强密码
- Druid监控账号密码全面加强
- 添加了配置注释提醒
⚠️ 仍需注意:
- 部署到生产环境前必须修改所有密码
- 定期更换密钥和密码
- 使用配置中心或环境变量管理敏感信息
- 关闭生产环境的调试接口
🔒 安全是一个持续的过程,请定期检查和更新配置!
最后更新时间: 2025-10-30
修改人员: AI Assistant
修改版本: v1.0.0