【问题标题】:Postgres SSLMode Value "require" Invalid When SSL Support Is Not Compiled Using Foreign Data Wrapper当 SSL 支持未使用外部数据包装器编译时,Postgres SSLMode 值“require”无效
【发布时间】:2016-07-11 06:16:16
【问题描述】:

我正在尝试使用外部数据包装器连接到远程服务器以在数据库之间传输一些数据,但是当 SSL 支持未编译时,我得到了“SSLMode 值“要求”无效”。这些是我正在运行的 sn-ps:

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;

详细信息:当 SSL 支持未编译时,sslmode 值“require”无效

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

【问题讨论】:

标签: postgresql


【解决方案1】:

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

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

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

根据报错信息,你属于第二种情况。

解决此问题的唯一方法是将已安装的 libpq 库替换为另一个支持 SSL 编译的库,这也意味着您的系统上安装了 OpenSSL。根据您的喜好自行编译或通过软件包安装它。一般来说,PostgreSQL 的预编译版本现在倾向于启用 SSL 支持。

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

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2016-12-18
    • 1970-01-01
    • 2019-01-14
    • 2020-09-22
    相关资源
    最近更新 更多