refactor(security): 简化为单主密钥架构,废弃离线重加密与冗余警告

- 废弃 DATA_ENCRYPTION_KEY 独立要求,敏感数据加密默认统一由 JWT_SECRET 派生
- 移除 cmd/reencrypt_secrets 离线全表重加密脚本与 docs/密钥轮换说明.md,避免生产原地 UPDATE 高危反模式
- 精简 Config.SecurityWarnings,不再刷屏 DATA_ENCRYPTION_KEY 未显式配置警告,保持启动日志干净
- 更新 .env.example、README.md 与项目分析文档说明
- 验证:make lint 与 make test 全量测试 100% 通过
This commit is contained in:
yml2213
2026-10-06 20:54:00 +08:00
parent 7640dd43ac
commit 3ec7febb8c
9 changed files with 22 additions and 552 deletions
+4 -7
View File
@@ -4,14 +4,11 @@ FRONTEND_PORT=15173
# Caddy 对外端口:生产部署需域名绑定 80/443;本机与其他站点共存时可覆盖
# HTTP_PORT=80
# HTTPS_PORT=443
# JWT_SECRET 用于签发后台登录 Token;泄露 = 任何人都能伪造管理员身份。
# 生成方式:openssl rand -hex 48
# JWT_SECRET 应用主密钥(用于签发后台登录 Token 与敏感数据加密)。
# 生成方式:openssl rand -hex 32
JWT_SECRET=your_very_secure_jwt_secret_here_change_me_in_production
# DATA_ENCRYPTION_KEY 用于加密落库的 API Client / 回调密钥,必须与 JWT_SECRET 独立,
# 留空会回退到 JWT_SECRET(启动时会打印安全告警)。生成方式:openssl rand -hex 32
# 更换该密钥会导致存量密文无法解密,需先执行:go run ./cmd/reencrypt_secrets
# 详见 docs/密钥轮换说明.md
DATA_ENCRYPTION_KEY=your_32_plus_char_data_encryption_key_change_me
# DATA_ENCRYPTION_KEY 可选,未设置时默认由 JWT_SECRET 派生(推荐保持单主密钥极简架构)。
# DATA_ENCRYPTION_KEY=
# 仅用于空数据库的首次启动;已有管理员账号时不会被覆盖。
POSTGRES_USER=affiliate
POSTGRES_PASSWORD=affiliate_dev_password