xinli/项目介绍/安全配置修改说明.md
xiao@123.123 fdf83af45a xiao
2025-11-03 18:21:32 +08:00

7.1 KiB
Raw Blame History

安全配置修改说明

重要提醒: 以下配置已使用新的默认值替换原有默认值,但在部署到生产环境前仍需根据实际情况进一步修改!


已修改的默认配置

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位以上

🎉 总结

已完成的改进:

  1. JWT密钥从简单字符串改为随机Base64编码
  2. 数据库密码从弱密码改为强密码
  3. Druid监控账号密码全面加强
  4. 添加了配置注释提醒

⚠️ 仍需注意:

  1. 部署到生产环境前必须修改所有密码
  2. 定期更换密钥和密码
  3. 使用配置中心或环境变量管理敏感信息
  4. 关闭生产环境的调试接口

🔒 安全是一个持续的过程,请定期检查和更新配置!


最后更新时间: 2025-10-30
修改人员: AI Assistant
修改版本: v1.0.0