每次数据库客户端发送查询或接收结果集时,这些数据都会在网络中传输。在没有外部访问的私有、隔离网络中,这或许是可接受的风险。但在大多数实际环境中,当流量经过共享基础设施、云网络或开放互联网时,未加密的数据库连接便会构成重大安全隐患。SSL/TLS 加密能填补这一漏洞,而正确配置 SSL/TLS 是保障数据库环境安全的重要步骤之一,却常被忽视。
为何未加密连接存在真实风险
如果没有加密,数据库客户端与服务器之间交换的数据将以明文形式传输。任何位于同一网络路径上的实体——无论是通过被入侵的路由器、配置错误的云虚拟网络,还是内部威胁——都有可能读取这些流量。这不仅包括查询结果,还包括身份验证凭据。从未加密的数据库连接中捕获的登录数据包,会直接为攻击者提供有效的用户名和密码,而无需其付出任何额外努力。这种风险并非理论上的;网络层拦截是一种有据可查的攻击技术,而当被拦截的流量来自数据库时,其影响将更为严重。
了解证书链
传输层安全协议(TLS)基于数字证书系统构建。在加密通信开始之前,服务器会向客户端出示一份证书以证明其身份,这实际上是在说:“我就是我所声称的那个人,这里有一份由受信任机构签发的加密签名文件作为证明。”该受信任机构即证书颁发机构(CA),其作用是为其签发的证书的身份提供担保。
实际上,这意味着要与数据库服务器建立经过正确验证的 TLS 连接,你需要以下三样东西:
- 服务器必须拥有由证书颁发机构(CA)签发的有效证书。
- 客户端必须拥有证书颁发机构(CA)的证书副本,以便验证服务器的身份。
- (可选)对于双向 TLS(mTLS),客户端也会向服务器出示自己的证书,因此身份验证是双向进行的。这种可选的客户端身份验证有时被称为基于证书的身份验证,其安全性远高于仅基于密码的身份验证。
需要了解的关键配置选项
在为数据库连接配置 TLS 时,不同数据库系统和客户端中通常会出现以下几个参数:
- CA证书文件是信任锚点。它在验证服务器身份时,会告知客户端应信任哪家证书颁发机构。
- 当需要双向 TLS 时,会使用客户端证书文件和客户端密钥文件,从而允许服务器反过来验证客户端的身份。
- 密码规范决定了哪些加密算法可用于该会话;指定强效的现代密码套件而非接受默认设置是一种良好的实践,因为旧版密码套件存在已知的漏洞。
PostgreSQL SSL 选项
PostgreSQL 通过其 SSL 模式设置为这一功能增添了特别有用的维度,该设置允许你精确定义连接的安全严格程度。选项范围从 allow(首先尝试不使用 SSL,如有需要则回退到 SSL)和 prefer(首先尝试 SSL,回退到未加密连接),到 require(仅限 SSL,但不验证证书),再到 verify-ca(SSL 且验证证书来自受信任的 CA)和 verify-full(SSL、验证 CA,且服务器主机名必须与证书匹配)。对于生产环境,verify-ca 或 verify-full 是合适的选择,因为任何比 require 更宽松的设置都会为中间人攻击留下可乘之机。
SSH 隧道作为一种替代方案
SSL/TLS 对数据库协议本身进行加密。而安全外壳协议(SSH)隧道则采用不同的方法:它将整个数据库连接封装在加密的 SSH 会话中。数据库客户端连接到本地端口,SSH 隧道通过加密连接将该流量转发到远程服务器,而数据库服务器则看到来自隧道端点的本地连接。在数据库服务器未配置 TLS,或因防火墙限制而未将数据库端口直接对外开放的情况下,SSH 隧道尤为有用,因为它仅需 SSH 访问权限,而无需在数据库层进行 TLS 配置。对于需要交互式连接位于堡垒主机后方的数据库的管理员而言,这也是保障远程访问安全的一种简便方法。
Navicat 如何支持 SSL/TLS 和 SSH 隧道
Navicat 的桌面产品(包括 Navicat Premium 以及各数据库专用的客户端)直接在连接设置界面中提供了 SSL/TLS 配置功能,用户在创建或编辑连接时可通过专用的“SSL”选项卡访问该功能。在此处,用户可以启用 SSL,提供用于验证服务器身份所需的 CA 证书文件,并可选地提供客户端证书和客户端密钥文件以实现双向 TLS。通过加密套件规范字段,管理员可以限制连接可接受的加密套件,而非依赖协商后的默认设置。特别针对 PostgreSQL 连接,Navicat 提供了上述所有 SSL 模式选项,使管理员能够精确控制连接验证的严格程度。
Navicat 产品系列还原生支持 SSH 隧道功能。在连接对话框的“SSH”选项卡中,用户可以配置通过中间 SSH 服务器建立的隧道,该功能同时支持基于密码的认证和公私钥对认证。这使得用户能够轻松地安全连接到未直接暴露在外部网络中的数据库。
Navicat On-Prem Server 还将此 SSL/TLS 支持扩展到了协作功能。On-Prem Server 与其客户端之间的连接可通过 SSL/TLS 进行加密,管理员可以配置这些会话所使用的具体密码套件。SSL/TLS 还可应用于 Navicat On-Prem Server 与其底层存储库数据库之间的连接,从而确保协作平台的内部架构实现端到端加密,而不仅仅是终端用户的连接。
结语
为数据库连接配置 SSL/TLS 并非复杂的工作,但确实需要关注细节,例如证书管理、模式选择和加密套件配置,这些环节很容易出错,或者被保留在不安全的默认设置中。如果配置得当,将能显著降低因网络层拦截导致凭证被盗或数据泄露的风险。对于任何处理敏感数据,或通过非完全私有、隔离网络进行访问的数据库而言,正确配置 TLS 绝非可选项——而是基本要求。

