3.5. 在 PostgreSQL 服务器上配置 TLS 加密


默认情况下,PostgreSQL 使用未加密的连接。对于更安全的连接,您可以对 PostgreSQL 服务器启用传输层安全(TLS)支持,并将客户端配置为建立加密连接。

先决条件

  • 您创建了 TLS 私钥,证书认证机构(CA)为您的 PostgreSQL 服务器发布了一个服务器证书。
  • PostgreSQL 服务器已安装。
  • 数据库集群已初始化。
  • 如果启用了 FIPS 模式,客户端必须支持 Extended Master Secret(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 在 RHEL 9.2 及更高版本上强制执行 TLS 扩展 "Extended Master Secret"

流程

  1. 将私钥和服务器证书存储在 /var/lib/pgsql/data/ 目录中:

    # cp server.{key,crt} /var/lib/pgsql/data/
    Copy to Clipboard Toggle word wrap
  2. 设置私钥和证书的所有权:

    # chown postgres:postgres /var/lib/pgsql/data/server.{key,crt}
    Copy to Clipboard Toggle word wrap
  3. 对只允许 PostgreSQL 服务器读取文件的服务器证书设置权限:

    # chmod 0400 /var/lib/pgsql/data/server.key
    Copy to Clipboard Toggle word wrap

    由于证书是建立安全连接前通信的一部分,因此任何客户端都可以在不需要身份验证的情况下检索它们。因此,您不需要对服务器证书文件设置严格的权限。

  4. 编辑 /var/lib/pgsql/data/postgresql.conf 文件并进行以下更改:

    1. 设置 scram-sha-256 哈希算法:

      password_encryption = scram-sha-256
      Copy to Clipboard Toggle word wrap
    2. 启用 TLS 加密:

      ssl = on
      Copy to Clipboard Toggle word wrap
  5. 编辑 /var/lib/pgsql/data/pg_hba.conf 文件,并更新身份验证条目,以使用 TLS 加密和 scram-sha-256 哈希算法。例如,将 host 条目改为 hostssl 以启用 TLS 加密,并在最后一列设置 scram-sha-256 哈希算法:

    hostssl    all    all    192.0.2.0/24    scram-sha-256
    Copy to Clipboard Toggle word wrap
  6. 重启 postgresql 服务:

    # systemctl restart postgresql.service
    Copy to Clipboard Toggle word wrap

验证

  • 使用 postgres 超级用户连接到 PostgreSQL 服务器,并执行 \conninfo 元命令:

    # psql "postgresql://postgres@localhost:5432" -c '\conninfo'
    Password for user postgres:
    You are connected to database "postgres" as user "postgres" on host "192.0.2.1" at port "5432".
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat