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

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

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 8.0 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

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

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

如果构建时启用了SSL支持,那么在postgresql.conf中将参数ssl设为on,就可以在启动PostgreSQL服务器时启用SSL。以SSL模式启动时,服务器会在数据目录中查找文件server.key和server.crt,它们必须分别包含服务器私钥和证书。这些文件必须正确设置,启用了SSL的服务器才能启动。如果私钥受口令保护,服务器将提示输入该口令,输入之前不会启动。

服务器会在同一个 TCP 端口上同时监听普通连接和SSL连接,并与每个连接进来的客户端协商是否使用SSL。默认情况下,这由客户端决定;关于如何把服务器配置为要求某些或全部连接必须使用SSL,请参阅第 19.1 节。

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

openssl req -new -text -out server.req

请填写openssl要求的信息。确保把本地主机名输入为“Common Name”;挑战密码可以留空。该程序会生成一个带口令保护的密钥;它不接受少于四个字符的口令。要移除口令(如果希望服务器自动启动就必须这样做),请运行命令

openssl rsa -in privkey.pem -out server.key
rm privkey.pem

输入旧口令以解锁现有密钥。接着执行

openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod og-rwx server.key

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

如果需要验证客户端证书,请把你希望检查的CA的证书放在数据目录中的root.crt文件里。该文件存在时,在 SSL 连接启动时会向客户端请求客户端证书,并且该证书必须由root.crt中现有的某个证书签名。

如果root.crt文件不存在,就不会请求或检查客户端证书。在这种模式下,SSL 提供通信安全,但不提供认证。

文件server.key、server.crt和root.crt只在服务器启动时检查;因此更改它们后必须重启服务器才能生效。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。