334 lines
7.1 KiB
Markdown
334 lines
7.1 KiB
Markdown
# 安全配置修改说明
|
||
|
||
**重要提醒:** 以下配置已使用新的默认值替换原有默认值,但在部署到生产环境前仍需根据实际情况进一步修改!
|
||
|
||
---
|
||
|
||
## ✅ 已修改的默认配置
|
||
|
||
### 1. JWT令牌密钥 ✅
|
||
|
||
**文件:** `ry-news-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
|
||
<!-- 添加依赖 -->
|
||
<dependency>
|
||
<groupId>com.github.ulisesbocchio</groupId>
|
||
<artifactId>jasypt-spring-boot-starter</artifactId>
|
||
<version>3.0.5</version>
|
||
</dependency>
|
||
```
|
||
|
||
```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
|
||
|