fix: 部署脚本添加 ENCRYPTION_KEY 和 ENABLE_CSRF 配置
修复问题: 1. 新安装时自动生成 ENCRYPTION_KEY(用于加密 OSS 敏感信息) 2. 新安装时默认启用 CSRF 保护(ENABLE_CSRF=true) 3. 升级时自动检查并补充缺失的 ENCRYPTION_KEY 和 ENABLE_CSRF 解决了部署后服务因缺少 ENCRYPTION_KEY 而无法启动的问题。 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
30
install.sh
30
install.sh
@@ -2114,6 +2114,9 @@ create_env_file() {
|
||||
# 生成随机Session密钥
|
||||
SESSION_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# 生成随机加密密钥(用于加密OSS等敏感信息)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
|
||||
# ========== CORS 安全配置自动生成 ==========
|
||||
# 根据部署模式自动配置 ALLOWED_ORIGINS 和 COOKIE_SECURE
|
||||
|
||||
@@ -2162,6 +2165,10 @@ JWT_SECRET=${JWT_SECRET}
|
||||
# Session密钥(用于会话管理)
|
||||
SESSION_SECRET=${SESSION_SECRET}
|
||||
|
||||
# 加密密钥(用于加密OSS Access Key Secret等敏感信息)
|
||||
# 重要:此密钥必须配置,否则服务无法启动
|
||||
ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
||||
|
||||
# 数据库路径
|
||||
DATABASE_PATH=./data/database.db
|
||||
|
||||
@@ -2199,6 +2206,10 @@ TRUST_PROXY=1
|
||||
# 公开端口(nginx监听的端口,用于生成分享链接)
|
||||
# 如果使用标准端口(80/443)或未配置,分享链接将不包含端口号
|
||||
PUBLIC_PORT=${HTTP_PORT}
|
||||
|
||||
# CSRF 保护(生产环境强烈建议开启)
|
||||
# 使用 Double Submit Cookie 模式防止跨站请求伪造攻击
|
||||
ENABLE_CSRF=true
|
||||
EOF
|
||||
|
||||
print_success "配置文件创建完成"
|
||||
@@ -3728,6 +3739,25 @@ update_patch_env() {
|
||||
else
|
||||
print_info ".env 已包含 SESSION_SECRET,保持不变"
|
||||
fi
|
||||
|
||||
# 检查 ENCRYPTION_KEY(加密密钥,用于加密OSS等敏感信息,必需)
|
||||
if ! grep -q "^ENCRYPTION_KEY=" "${PROJECT_DIR}/backend/.env"; then
|
||||
# 自动生成随机加密密钥
|
||||
NEW_ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
echo "ENCRYPTION_KEY=${NEW_ENCRYPTION_KEY}" >> "${PROJECT_DIR}/backend/.env"
|
||||
print_warning "已为现有 .env 补充 ENCRYPTION_KEY(已自动生成安全密钥)"
|
||||
print_info "此密钥用于加密 OSS Access Key Secret 等敏感信息"
|
||||
else
|
||||
print_info ".env 已包含 ENCRYPTION_KEY,保持不变"
|
||||
fi
|
||||
|
||||
# 检查 ENABLE_CSRF(CSRF 保护,生产环境强烈建议开启)
|
||||
if ! grep -q "^ENABLE_CSRF=" "${PROJECT_DIR}/backend/.env"; then
|
||||
echo "ENABLE_CSRF=true" >> "${PROJECT_DIR}/backend/.env"
|
||||
print_warning "已为现有 .env 补充 ENABLE_CSRF=true(CSRF保护已启用)"
|
||||
else
|
||||
print_info ".env 已包含 ENABLE_CSRF,保持不变"
|
||||
fi
|
||||
else
|
||||
print_warning "未找到 ${PROJECT_DIR}/backend/.env,请手动确认配置"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user