↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.

3.7. 使用 SSL 的安全 TCP/IP 连接 #

PostgreSQL 原生支持通过 SSL 的连接来加密客户端/服务器通信,以提高安全性。这要求客户端和服务器系统上都安装了 OpenSSL,并且构建时启用了相应支持(见第 1 章)。

编译了 SSL 支持后,PostgreSQL 服务器可以用 -l(ell)参数启动以启用 SSL 连接。以 SSL 模式启动时,服务器会在数据目录中寻找 server.key 和 server.crt 文件。这两个文件应分别包含服务器私钥和证书。这些文件必须正确设置,启用了 SSL 的服务器才能启动。如果私钥受口令保护,服务器会提示输入口令,输入之前不会启动。

服务器会在同一个 TCP/IP 端口上同时监听标准连接和 SSL 连接,并与每个连接的客户端协商是否使用 SSL。关于如何在服务器端强制某些连接使用 SSL,见第 4 章。

关于如何创建服务器私钥和证书的细节,请参考 OpenSSL 文档。可以使用简单的自签名证书来开始测试,但在生产环境中应使用由 CA(全球性 CA 或本地 CA 之一)签名的证书,以便客户端能验证服务器的身份。要快速创建一个自签名证书,使用以下 OpenSSL 命令:

openssl req -new -text -out cert.req

填写 openssl 询问的信息。确保把本地主机名输入为 Common Name;challenge password 可以留空。该脚本会生成一个受 passphrase 保护的密钥;它不接受少于四个字符的 pass phrase。要去除 passphrase(如果想让服务器自动启动就必须去除),运行命令

openssl rsa -in privkey.pem -out cert.pem

输入旧 passphrase 以解锁现有密钥。然后执行

openssl req -x509 -in cert.req -text -key cert.pem -out cert.cert
cp cert.pem $PGDATA/server.key
cp cert.cert $PGDATA/server.crt

把证书转换为自签名证书,并把密钥和证书复制到服务器将要寻找它们的位置。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.