PostgreSQL:如何配置数据库的传输层加密(SSL加密连接)
更多内容请见: 《深入掌握PostgreSQL数据库》 - 专栏介绍和目录
文章目录
在 PostgreSQL 中配置传输层加密(SSL/TLS)是保障数据库通信安全的核心措施,可有效防止中间人攻击(MitM)、数据窃听和篡改。本文将系统性地详解 如何从零开始配置 PostgreSQL 的 SSL 加密连接,涵盖证书生成、服务端配置、客户端连接、验证模式、性能影响及最佳实践,适用于 PostgreSQL 10 及以上版本。
一、为什么需要 SSL 加密?
PostgreSQL 默认以明文传输所有数据(包括用户名、密码、SQL 语句、查询结果)。在以下场景中,必须启用 SSL:
- 数据库与应用部署在不同服务器(跨网络);
- 使用公共云或共享网络环境;
- 满足合规要求(如 GDPR、PCI-DSS、等保 2.0)。
注意:SSL 仅加密传输中的数据(in-transit),不加密存储数据(需配合透明数据加密 TDE 或文件系统加密)。
二、SSL 工作原理简述
PostgreSQL 支持标准 TLS 协议(v1.2+ 推荐)。流程如下:
- 客户端发起 SSL 连接请求;
- 服务端返回其 SSL 证书;
- 客户端验证证书(可选);
- 双方协商加密套件,建立加密通道;
- 后续所有通信均通过该通道加密传输。
Postgre