选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 连接和认证

CONFIGURATION PARAMETER连接和认证 / SSL

ssl_min_protocol_version

设置允许使用的最低 SSL/TLS 协议版本。

Sets the minimum SSL/TLS protocol version to use.

枚举 重载生效 引入 12 现存至 20 devel 1 次默认值变更

类型
枚举enum
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
TLSv1.2
枚举值
TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
引入版本
12
状态
现存

PostgreSQL 18 手册 官方文档 引入提交 e73e67c719

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

TLSv1 12 TLSv1.2 13 – 20

默认值一共换过 2 档,每段的宽度按它覆盖的大版本数伸展,深色的一段是当前查看的 PostgreSQL 18。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.3 连接和认证 本站手册 官方原文

本版译文与 PostgreSQL 16 完全一致,下面就是同一段文字。

设置要使用的最小SSL/TLS协议版本。当前的可用版本包括: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. 旧版本的 OpenSSL 库不支持所有值;如果选择了不支持的设置将会引发错误。 TLS 1.0之前的协议版本,也就是SSL 版本 2 and 3,总是禁用的。

默认为TLSv1.2, 在本文撰写时的行业最佳实践。

这个参数只能在postgresql.conf文件中或通过服务器命令行进行设置。

机制详解

ssl_min_protocol_version:设置允许使用的最低 SSL/TLS 协议版本。协商版本低于下限的连接会被拒绝;上游默认值从 PostgreSQL 12 的 TLSv1 提升为 PostgreSQL 13 的 TLSv1.2。

ssl_min_protocol_version 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。既有 TLS 会话不会重新协商。

它参与新握手使用的 TLS 上下文。ssl 启用传输,pg_hba.conf 决定哪些连接类别必须使用它,而证书、私钥、CA、吊销、协议与密码参数必须组成一套有效策略。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    把 ssl_min_protocol_version 作为传输安全策略而非性能旋钮。遵循组织 TLS 基线,并测试证书轮换、重新加载及每类客户端。

  • OLAP分析与批处理

    分析流量应采用相同 TLS 下限;大流量可能暴露 CPU 成本,但只能在正确性之后压测,不能据此接受过时协议。

  • 小规格低配实例与开发机

    保持 ssl_min_protocol_version 简单且安全,使用托管证书与针对当前 OpenSSL 版本评审过的库默认值,并在到期前演练续期。

常见问题

  • 编辑 ssl_min_protocol_version 后没有重新加载配置,也没有核对有效值与后续行为。
  • 只更新一个 TLS 文件或策略参数,留下无效证书链、不可读私钥或不兼容协议集合。
  • 误以为重新加载会重新协商既有会话;TLS 策略变化只影响新握手。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 ssl_min_protocol_version。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 13 ← 12 默认值变更

    默认值 TLSv1 TLSv1.2

  3. PostgreSQL 12 ← 11 新增此参数

    PostgreSQL 12 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
12 TLSv1 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
13 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
14 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
15 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
16 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
17 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
18 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
19 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
20 沿用 TLSv1.2 重载生效 枚举 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Connections and Authentication 连接和认证 17 个
SSL 17
ssl 布尔 重载生效 off 101 次
启用 SSL/TLS 连接。 现存
ssl_ca_file 字符串 重载生效 空字符串 101 次
设置 SSL 证书颁发机构文件的位置。 现存
ssl_cert_file 字符串 重载生效 server.crt 101 次
设置 SSL 服务器证书文件的位置。 现存
ssl_ciphers 字符串 重载生效 HIGH:MEDIUM:+3DES:!aNULL 103 次
设置 TLS 1.2 及更低版本允许使用的密码套件列表。 现存
ssl_crl_dir 字符串 重载生效 空字符串
设置 SSL 证书吊销列表目录的位置。 现存
ssl_crl_file 字符串 重载生效 空字符串 101 次
设置 SSL 证书吊销列表文件的位置。 现存
ssl_dh_params_file 字符串 重载生效 空字符串
设置 SSL DH 参数文件的位置。 现存
ssl_ecdh_curve 字符串 重载生效 prime256v1 101 次
设置 ECDH 使用的椭圆曲线。 于 18 移除
ssl_groups 字符串 重载生效 X25519:prime256v1
设置 Diffie-Hellman 密钥交换使用的组。 现存
ssl_key_file 字符串 重载生效 server.key 101 次
设置 SSL 服务器私钥文件的位置。 现存
ssl_max_protocol_version 枚举 重载生效 空字符串
设置允许使用的最高 SSL/TLS 协议版本。 现存
ssl_min_protocol_version 枚举 重载生效 TLSv1.2 131 次
设置允许使用的最低 SSL/TLS 协议版本。 现存
ssl_passphrase_command 字符串 重载生效 空字符串
设置用于获取 SSL 私钥口令的命令。 现存
ssl_passphrase_command_supports_reload 布尔 重载生效 off
控制重新加载服务器配置时是否调用 ssl_passphrase_command。 现存
ssl_prefer_server_ciphers 布尔 重载生效 on 101 次
优先采用服务器端的密码套件顺序。 现存
ssl_sni 布尔 重载生效 off
设置是否解释 SSL 连接中的 SNI 扩展。 现存
ssl_tls13_ciphers 字符串 重载生效 空字符串
设置 TLS 1.3 允许使用的密码套件列表。 现存