在将系统部署到云主机前,必须完成以下安全配置:
# 生成随机密钥(至少 256-bit = 32 字节)
export APP_JWT_SECRET=$(openssl rand -base64 32)
# 设置超级管理员初始密码(部署后立即修改)
export APP_SUPER_ADMIN_PASSWORD="请替换为强密码"
# 数据库加密密钥(启用 SQLCipher 时必需)
export DB_ENCRYPT_KEY=$(openssl rand -base64 32)
# CORS 允许的域名(生产环境用实际域名)
export APP_CORS_ORIGINS="https://okr.your-company.com"
# /etc/systemd/system/okr-performance.service
[Unit]
Description=OKR Performance System
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/okr-performance
EnvironmentFile=/opt/okr-performance/env.prod
ExecStart=/usr/bin/java -jar /opt/okr-performance/okr-performance.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10
# 安全加固
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/opt/okr-performance/data
PrivateTmp=yes
[Install]
WantedBy=multi-user.target
chmod 700 /opt/okr-performance/data
chmod 600 /opt/okr-performance/data/okr-performance.db
chown -R appuser:appuser /opt/okr-performance
pom.xml 中 sqlcipher-jdbc 依赖的注释,重新构建application-prod.yml 中 datasource 配置,使用 SQLCipher URL迁移现有明文数据库(如有):
# 方案: 导出 → 启用加密 → 导入
sqlcipher data/okr-performance.db "PRAGMA key='${DB_ENCRYPT_KEY}';"
# 安装 certbot
apt install certbot python3-certbot-nginx
# 复制 Nginx 配置
cp deployment/nginx-okr-performance.conf /etc/nginx/sites-available/
ln -s /etc/nginx/sites-available/nginx-okr-performance.conf /etc/nginx/sites-enabled/
# 获取 SSL 证书
certbot --nginx -d okr.your-company.com
# 测试并重载
nginx -t && systemctl reload nginx
# 仅开放 80/443 端口(Nginx)
ufw allow 80/tcp
ufw allow 443/tcp
# 阻止直接访问应用端口
ufw deny 18080/tcp
ufw enable
curl -I https://okr.your-company.com)admin 登录后立即修改密码如怀疑数据泄露:
APP_JWT_SECRET(所有用户需重新登录)/var/log/nginx/okr-access.log 中的异常访问模式operation_log 表中的可疑操作