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

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
历史版本。 PostgreSQL 8.3 已结束支持。 请参阅 当前版本手册.

30.16. SSL 支持 #

PostgreSQL原生支持使用SSL连接来加密客户端/服务器通信以提高安全性。关于服务器端SSL功能的细节,见第 17.8 节。

libpq会读取系统范围的OpenSSL配置文件。默认情况下,该文件名为openssl.cnf,位于openssl version -d所报告的目录中。可以通过把环境变量OPENSSL_CONF设置为所需配置文件的名称来覆盖这个默认值。

为了验证服务器证书是可信的,把你信任的证书颁发机构(CA)的证书放在用户主目录的文件~/.postgresql/root.crt中。(在 Microsoft Windows 上该文件名为%APPDATA%\postgresql\root.crt。)这样libpq将验证服务器的证书是由一个受信任的证书颁发机构签名的。如果服务器没有出示一个受信任的证书,SSL 连接将失败。如果文件~/.postgresql/root.crl存在(在 Microsoft Windows 上为%APPDATA%\postgresql\root.crl),还会检查证书吊销列表(CRL)条目。

如果服务器要求一个可信的客户端证书,libpq将发送存储在用户主目录文件~/.postgresql/postgresql.crt中的证书。该证书必须由服务器信任的证书颁发机构(CA)之一签名。还必须存在一个配套的私钥文件~/.postgresql/postgresql.key,除非证书的私钥存储在硬件令牌中(由PGSSLKEY指定)。(在 Microsoft Windows 上这些文件名为%APPDATA%\postgresql\postgresql.crt和%APPDATA%\postgresql\postgresql.key。)私钥文件不能允许所有用户读取。

如果设置了环境变量PGSSLKEY,它的值应当由一个冒号分隔的引擎名和密钥标识符组成。在这种情况下,libpq将装载指定的引擎,即支持特殊硬件的OpenSSL模块,并引用具有指定标识符的密钥。标识符是引擎相关的。通常,密码学硬件令牌不会把私钥透露给应用;相反,应用把所有需要私钥的密码学操作都委托给硬件令牌完成。

如果你还在libpq之外在应用中使用SSL,可以使用PQinitSSL(int)告诉libpq,SSL库已经被你的应用初始化过。关于 SSL API 的细节见http://h71000.www7.hp.com/doc/83final/BA554_90007/ch04.html。

表 30.1. libpq/客户端 SSL 文件的使用

文件内容作用
~/.postgresql/postgresql.crt客户端证书由服务器要求
~/.postgresql/postgresql.key客户端私钥证明客户端证书是由其属主发送的;并不表明证书属主是可信的
~/.postgresql/root.crt受信任的证书颁发机构检查服务器证书是由一个受信任的证书颁发机构签名的
~/.postgresql/root.crl被证书颁发机构吊销的证书服务器证书必须不在这个列表中

报告文档问题

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