feat: 支持 MySQL 公网 TLS CA 校验 (#86)
This commit is contained in:
@@ -174,13 +174,20 @@ database:
|
||||
port: "3307"
|
||||
name: autobuy
|
||||
user: buy
|
||||
tls_mode: disabled
|
||||
tls_ca: certs/mysql84-ca.pem
|
||||
password: "从安全渠道取得"
|
||||
```
|
||||
|
||||
Admin 本地开发连接线上 MySQL 时默认仍通过 SSH 隧道,把 `port` 改为隧道的本地
|
||||
端口。数据库客户端确需公网直连时,只能在项目负责人明确批准后采用固定 `/32`
|
||||
来源白名单、来源限定账号、最小权限和强制 SSL,绝不能向全网开放。线上 systemd
|
||||
部署继续使用环境变量:
|
||||
来源白名单、来源限定账号、最小权限和强制 SSL,绝不能向全网开放。
|
||||
|
||||
- 同机或 SSH 隧道:`tls_mode: disabled`;
|
||||
- 公网直连:`tls_mode: verify_ca`,`tls_ca` 指向服务器公开 CA。客户端要求 TLS 1.2+
|
||||
并校验证书链,失败时不会回退明文。CA 证书可以公开,私钥绝不能复制到客户端。
|
||||
|
||||
线上 systemd 部署继续使用环境变量:
|
||||
|
||||
```text
|
||||
CMAUTOBUY_DB_HOST=127.0.0.1
|
||||
@@ -188,11 +195,13 @@ CMAUTOBUY_DB_PORT=3307
|
||||
CMAUTOBUY_DB_NAME=<独立数据库名>
|
||||
CMAUTOBUY_DB_USER=<最小权限账号>
|
||||
CMAUTOBUY_DB_PASSWORD=<从安全渠道取得>
|
||||
CMAUTOBUY_DB_TLS_MODE=disabled
|
||||
CMAUTOBUY_DB_TLS_CA=<verify_ca 模式下的 CA 路径>
|
||||
```
|
||||
|
||||
环境变量按字段覆盖 `config.yaml`,所以现有线上部署方式不受影响。生产环境文件和
|
||||
本地 `config.yaml` 都不得进入仓库、日志或工单;线上 MySQL 只监听本机,本地开发
|
||||
通过 SSH 隧道连接独立的 `_test` 数据库。
|
||||
本地 `config.yaml` 都不得进入仓库、日志或工单;本地自动化测试仍通过 SSH 隧道
|
||||
连接独立的 `_test` 数据库,不得对生产 `autobuy` 执行清理测试。
|
||||
|
||||
程序旁边的 `data/` 只保留日志、上传文件和迁移前的 SQLite 只读备份:
|
||||
|
||||
|
||||
@@ -173,6 +173,11 @@ Git 忽略且不得随程序打包、截图或粘贴到工单和日志;线上
|
||||
固定 `/32` 来源白名单、公网接口其余来源 DROP、来源 IP 限定账号、最小库权限和
|
||||
`REQUIRE SSL`;root 始终仅限服务器本机。
|
||||
|
||||
`[必须]` Admin 公网连接使用 `database.tls_mode: verify_ca`:最低 TLS 1.2,加载
|
||||
服务器公开 CA 并验证证书链,验证失败即拒绝连接,不得使用允许明文回退的
|
||||
`preferred`。服务器自动证书没有 SAN,客户端只信任该服务器的专属 CA,不做公网
|
||||
IP 主机名匹配;CA 轮换时必须同步更新客户端公开证书。
|
||||
|
||||
## 7. 性能
|
||||
|
||||
规模很小(个位数操作员、集中部署),不要提前优化。但下面几条是基本功:
|
||||
|
||||
Reference in New Issue
Block a user