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

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
历史版本PostgreSQL 8.3 已于 2013 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

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 被证书颁发机构吊销的证书 服务器证书必须不在这个列表中

提交更正

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