新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级

新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级

功能简介

v4.0.0 为 gt-checksum 和 repairDB 同时新增了 SSL/TLS 加密连接支持。通过 8 个新增配置参数,源端和目标端可以独立配置各自的 SSL 证书和加密模式。

参数说明

gt-checksum 参数(源端 + 目标端):

参数名可选值默认值说明
srcSslCa文件路径源端 CA 证书文件路径
srcSslCert文件路径源端客户端证书文件路径
srcSslKey文件路径源端客户端密钥文件路径
srcSslMode见下表PREFERRED源端 SSL 模式
dstSslCa文件路径目标端 CA 证书文件路径
dstSslCert文件路径目标端客户端证书文件路径
dstSslKey文件路径目标端客户端密钥文件路径
dstSslMode见下表PREFERRED目标端 SSL 模式

repairDB 参数(仅目标端):

参数名说明
dstSslCa目标端 CA 证书文件路径
dstSslCert目标端客户端证书文件路径
dstSslKey目标端客户端密钥文件路径
dstSslMode目标端 SSL 模式

为什么 repairDB 只有目标端参数?repairDB 是修复工具,只连接目标端数据库执行修复 SQL,不需要源端连接,因此只需配置目标端 SSL 参数。

SSL 模式说明

模式说明需要 CA 证书?
DISABLED禁用 SSL,不加密连接
PREFERRED优先使用 SSL,服务端不支持时回退到非加密连接
REQUIRED必须使用 SSL 加密,但不验证服务端证书
VERIFY_CA验证服务端 CA 证书链
VERIFY_IDENTITY验证 CA 证书链和服务端身份(主机名)

使用方式非常简单,在配置文件gc.conf中添加几行即可:

; 最小配置:仅要求加密,不验证证书
srcSslMode=REQUIRED
dstSslMode=REQUIRED

二、功能作用及使用场景深入解读

2.1 为什么需要 SSL 加密连接?

在数据校验和修复场景中,gt-checksum 需要从源端和目标端大量读取数据进行比对。如果连接未加密,数据在传输过程中存在被窃听或篡改的风险。

场景一:跨机房/跨云校验

源端和目标端分别部署在不同云平台,校验流量经过公网传输。如果没有 SSL 加密,数据包可以被中间节点抓取和分析。

场景二:安全合规要求

金融、医疗、政务等行业对数据传输有严格的加密要求。数据库审计系统可能要求所有数据库连接必须使用加密通道,即使是只读查询也不例外。

场景三:共享网络环境

在 Kubernetes 集群或共享 VPC 中,不同租户的流量可能共享物理网络。虽然有网络隔离,但深度防御(Defense in Depth)原则要求在传输层也做加密保护。

场景四:修复 SQL 中的敏感数据

repairDB 执行的修复 SQL 可能包含用户个人信息、交易记录等敏感数据。这些 SQL 文本通过明文连接传输时,等同于将敏感数据直接暴露在网络上。

2.2 五种 SSL 模式:从"只加密"到"全面验证"

gt-checksum 提供了五种 SSL 模式,覆盖从最低安全要求到最高安全级别的全部场景:

DISABLED——明确禁用

srcSslMode=DISABLED

显式禁用 SSL。适用于已经在网络层面做了加密(如 VPN、专线),或者在完全可信的内网环境中使用。

PREFERRED——自适应模式(默认值)

srcSslMode=PREFERRED

优先尝试 SSL 连接,如果服务端不支持则回退到非加密连接。这是设置了其他 SSL 参数但未显式指定mode时的默认值。适用于过渡期场景——源端和目标端可能部分启用了 SSL。

REQUIRED——强制加密

srcSslMode=REQUIRED

强制使用 SSL 加密,但不验证服务端证书。这意味着传输数据是加密的,但客户端不会检查服务端证书是否由可信 CA 签发。适用于内部环境,需要加密但不担心中间人攻击的场景。

VERIFY_CA——验证证书链

srcSslCa=/path/to/ca.pem
srcSslMode=VERIFY_CA

验证服务端证书是否由指定的 CA 签发。需要提供 CA 证书文件(srcSslCadstSslCa)。这是生产环境推荐的最低安全级别。

VERIFY_IDENTITY——全面验证

srcSslCa=/path/to/ca.pem
srcSslMode=VERIFY_IDENTITY