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

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 起没有变过。带单位的取值换算成了可读形式,原始的 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 允许使用的密码套件列表。 现存