↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

百科 / 配置参数 / 连接和认证

CONFIGURATION PARAMETER连接和认证 / SSL

ssl_passphrase_command

设置用于获取 SSL 私钥口令的命令。

Command to obtain passphrases for SSL.

字符串 重载生效 引入 11 现存至 20 devel 0 次默认值变更

类型
字符串string
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
空字符串原始值 ''
引入版本
11
状态
现存

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

版本轨迹

相对 PostgreSQL 17 仅简述或分类有更新。

默认值变迁

空字符串 11 – 20

已记录的默认值在 PostgreSQL 11–20 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

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

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

设置获取用于解密私钥等 SSL 文件的口令时要调用的外部命令。默认值为空,表示使用内置的提示机制。

该命令必须将口令输出到标准输出,并以退出码 0 结束。参数值中的 %p 会被替换为提示字符串。(要表示字面值 %,应写成 %%。)提示字符串可能包含空白,因此务必正确加引号。如果输出末尾有一个换行符,会将其去掉。

该命令不一定要提示用户输入口令,也可以从文件读取口令、从钥匙链获取口令等。用户应自行确保所选机制足够安全。

此参数只能在 postgresql.conf 文件中或服务器命令行上设置。

机制详解

ssl_passphrase_command 是 PostgreSQL 需要解密加密私钥等 SSL 文件时调用的外部助手。助手必须把口令写到标准输出并以状态零退出;PostgreSQL 会去掉输出末尾的一个换行。

配置命令中的 %p 会替换为可能包含空白的提示字符串,因此必须安全引用;%% 输出字面百分号。命令以 PostgreSQL 服务账号运行,其环境、路径、参数、输出与错误日志都不得泄漏秘密。

它属于 SIGHUP 上下文,但重载时能否替换加密私钥还取决于 ssl_passphrase_command_supports_reload。非交互 keychain/文件助手可支持重载;TTY 提示通常只适合受控启动,Windows 另有重载要求。

调优建议

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

  • OLTP在线事务处理

    使用绝对路径、最小化、非交互助手,并由受保护 keychain 或文件描述符提供秘密。测试精确标准输出、退出状态、%p 引用、超时/失败、启动、重载和故障节点可用性,且不得记录口令。

  • OLAP分析与批处理

    分析节点使用相同助手与秘密源;负载类型不会改变私钥信任要求。安排证书轮换前测试无人值守重启。

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

    优先使用最简单且可审计、能无人值守重启的助手。若保留 TTY 提示,应记录:除非安全启用 supports_reload,否则重载无法替换加密私钥。

常见问题

  • 在标准输出中写入口令以外内容,或返回非零状态。
  • 没有引用 %p,而替换后的提示可能含空白;或忘记字面百分号需要写成 %%。
  • 通过命令参数、进程列表、环境变量、shell 跟踪、标准错误或服务器日志泄漏口令。
  • 部署只在一个主库交互运行成功,却在无人值守重启、重载或故障转移时失败的助手。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 18 ← 17 仅描述更新

    补充说明 (无) An empty string means use the built-in prompting mechanism.

  3. PostgreSQL 11 ← 10 新增此参数

    PostgreSQL 11 起可用

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
11 空字符串 — 重载生效 字符串 — — —
12 空字符串 — 重载生效 字符串 — — —
13 空字符串 — 重载生效 字符串 — — —
14 空字符串 — 重载生效 字符串 — — —
15 空字符串 — 重载生效 字符串 — — —
16 空字符串 — 重载生效 字符串 — — —
17 空字符串 — 重载生效 字符串 — — —
18 空字符串 — 重载生效 字符串 — — —
19 空字符串 — 重载生效 字符串 — — —
20 沿用 空字符串 — 重载生效 字符串 — — —

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
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 允许使用的密码套件列表。 现存