fix(连接): 默认校验 T+ 证书并限制开发端口
T+ 连接默认校验服务器证书,隔离开发回退须显式配置。 MySQL 与 Redis 的开发端口仅绑定本机回环地址。
This commit is contained in:
parent
908851a704
commit
5e5304eece
@ -49,8 +49,8 @@ T_PLUS_ODBC_DRIVER=
|
||||
# 默认启用传输加密。旧实例 TLS 不兼容时,仅隔离开发环境可显式设为 false,
|
||||
# 记录原因并重新验收;程序不会自动降级。真实环境值后续按验收结果填写。
|
||||
T_PLUS_ENCRYPT=true
|
||||
# 内网自签证书可暂用 true;它不校验证书身份。部署可信证书后改为 false。
|
||||
T_PLUS_TRUST_SERVER_CERTIFICATE=true
|
||||
# 默认校验服务器证书。仅隔离开发环境可显式设为 true,并记录原因和验收范围。
|
||||
T_PLUS_TRUST_SERVER_CERTIFICATE=false
|
||||
T_PLUS_CONNECT_TIMEOUT=10
|
||||
T_PLUS_QUERY_TIMEOUT=120
|
||||
# 可选:留空时使用仓库根目录下的 db/queries/tplus/
|
||||
|
||||
@ -92,7 +92,8 @@ class Settings(BaseSettings):
|
||||
# 部署前必须指定已在 SQL Server 2008 R2 实测的驱动,不自动选择最新版。
|
||||
t_plus_odbc_driver: str = ""
|
||||
t_plus_encrypt: bool = True
|
||||
t_plus_trust_server_certificate: bool = True
|
||||
# 默认校验服务器证书;自签回退只允许隔离开发显式开启,避免中间人替换证书。
|
||||
t_plus_trust_server_certificate: bool = False
|
||||
t_plus_connect_timeout: int = 10
|
||||
t_plus_query_timeout: int = Field(default=120, ge=1, le=600)
|
||||
t_plus_query_dir: str = ""
|
||||
|
||||
@ -34,14 +34,14 @@ def test_T加未启用时读取器不建立连接() -> None:
|
||||
assert settings.t_plus_enabled is False
|
||||
|
||||
|
||||
def test_T加默认加密且允许显式隔离环境回退(monkeypatch) -> None:
|
||||
def test_T加默认加密并默认校验服务器证书(monkeypatch) -> None:
|
||||
monkeypatch.delenv("T_PLUS_ENCRYPT", raising=False)
|
||||
monkeypatch.delenv("T_PLUS_TRUST_SERVER_CERTIFICATE", raising=False)
|
||||
assert _settings().t_plus_database_url.query["Encrypt"] == "yes"
|
||||
assert _settings().t_plus_database_url.query["TrustServerCertificate"] == "yes"
|
||||
url = _settings(t_plus_encrypt=False, t_plus_trust_server_certificate=False).t_plus_database_url
|
||||
assert _settings().t_plus_database_url.query["TrustServerCertificate"] == "no"
|
||||
url = _settings(t_plus_encrypt=False, t_plus_trust_server_certificate=True).t_plus_database_url
|
||||
assert url.query["Encrypt"] == "no"
|
||||
assert url.query["TrustServerCertificate"] == "no"
|
||||
assert url.query["TrustServerCertificate"] == "yes"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("value", ["a;b", "a}b", "{prefix", "中文;UID=other}x"])
|
||||
|
||||
@ -24,7 +24,7 @@ services:
|
||||
# 首次启动自动执行 db/init 下的初始化脚本
|
||||
- ../db/init:/docker-entrypoint-initdb.d
|
||||
ports:
|
||||
- "3306:3306"
|
||||
- "127.0.0.1:3306:3306"
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
|
||||
interval: 10s
|
||||
@ -45,7 +45,7 @@ services:
|
||||
volumes:
|
||||
- redis-dev-data:/data
|
||||
ports:
|
||||
- "6379:6379"
|
||||
- "127.0.0.1:6379:6379"
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "--no-auth-warning", "ping"]
|
||||
interval: 10s
|
||||
|
||||
Loading…
Reference in New Issue
Block a user