功能概述

使⽤ SSL 加密通信可确保客⼾端和服务器之间的所有通信都经过加密,防⽌数据泄露或篡改,确保数据的安全与完整性。PostgreSQL 集群默认关闭 SSL。

操作步骤

开启 SSL 传输加密

将配置参数 ssl 修改为 true,即可开启 SSL 传输加密。详情参考如何修改配置参数

使用 SSL 连接数据库

在客户端服务器终端,执行如下命令行,连接 PostgreSQL 数据库。

  • 命令行

    psql "sslmode=allow user=<user_name> host=<localhost> dbname=<database_name>"
  • 命令行参数说明

    选项 说明

    sslmode

    用于指定数据库连接时使用的 SSL 加密模式。可选值及其说明如下。

    • allow 表示客⼾端将尝试建⽴ SSL/TLS 连接,但如果服务器不⽀持 SSL/TLS 连接,客⼾端将以普通⽂本⽅式连接。

    • prefer 默认模式,客⼾端将⾸先尝试建⽴ SSL 连接,如果服务器不⽀持 SSL 连接,则以普通⽂本⽅式连接。

    • require 表示客⼾端只尝试 SSL 连接,只对数据链路加密,并不验证服务器证书的有效性。若服务器不支持 SSL,将会连接失败。

    • verify-ca 表示客⼾端只使⽤ SSL 加密连接到服务器,并验证服务器 SSL 证书的有效性。若服务器 SSL 证书无效,将会连接失败。

    • verify-full 表示客⼾端使⽤ SSL 加密连接到服务器,并验证服务器证书的有效性,同时⽐对证书内的 CN 或 DNS 与连接时配置的数据库连接地址是否⼀致。

    • disable 表示客户端不使用 SSL 连接,数据传输过程中将不会进行加密。

    • 当取值为 verify-caverify-full 时,需要配置 Root certificate 参数,用于设置数据库 CA 证书的路径。

    user

    登录数据库的用户名,可在相应数据库详情页面进行查看。

    host

    数据库节点的 IP 或者双节点集群的 VIP。

    dbname

    数据库的名称,默认有一个名为 postgres 的数据库。

查看客户端是否开启 SSL 加密

在客户端服务器终端,执行如下命令行,查看客户端是否开启 SSL 加密。

  • 使用 SSL 连接数据库时,连接成功后,返回如下提示信息,则表示客户端已开启 SSL 加密。

    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    ssl conf 1
  • 连接至数据库后,执行如下命令,查询 pg_stat_ssl 视图,若返回结果中有相应的链接信息,则说明客户端已开启 SSL 加密。

    SELECT * FROM pg_stat_ssl;
    ssl conf 2