Postgres SSLMode值"要求"使用外部数据包装器编译SSL支持时无效

时间:2016-03-23 19:21:22

标签: postgresql

我尝试使用外部数据包装器连接到远程服务器,以便在数据库之间传输一些数据,但是很容易获得SSLMode值"要求"如果未在'中编译SSL支持,则无效。这些是我正在运行的片段:

CREATE SERVER remote FOREIGN DATA WRAPPER postgres_fdw
OPTIONS(dbname '...', host '...', port '...', sslmode 'require');

CREATE USER MAPPING FOR USER SERVER remote
OPTIONS (user '...', password '...');

CREATE FOREIGN TABLE remote.accounts (
  ...
);

SELECT * FROM remote.accounts;
  

详细信息:sslmode值"要求"在

中未编译SSL支持时无效

我尝试使用psql连接到"sslmode=require" - 但这似乎没有帮助。在创建服务器时,我还将sslmode作为标志包含在内。我连接的postgres实例是在Heroku上。如果我连接到远程服务器上的其他数据库,则运行查询 - 但是从本地数据库失败。如何修复SSL支持未编译?

1 个答案:

答案 0 :(得分:2)

本地PostgreSQL实例使用本地libpq库连接到远程实例。

如果在编译时,该库已配置--with-openssl(传递给postgres源代码树的顶级./configure脚本的选项),则它会动态链接到{ {1}}库和加密会话的呼叫站点已添加。

另一方面,如果未配置此选项,则生成的openssl根本没有任何SSL功能,并且该库无法连接到需要SSL的远程服务器。 / p>

根据错误消息,您是第二种情况。

解决此问题的唯一方法是将已安装的libpq库替换为使用SSL支持编译的另一个库,这也意味着您已在系统上安装了OpenSSL。您可以自己编译,也可以根据自己的喜好通过包安装。一般来说,PostgreSQL的预编译版本往往会启用SSL支持。

即使libpq源位于服务器的源代码内,也可以单独编译它们,并且可以独立于其余库使用该库。 有一个问题:How to download, compile & install ONLY the libpq source on a server that DOES NOT have PostgreSQL installed

相关问题