postgresql Postgres SSLMode值“require”在未使用外部数据 Package 器编译SSL支持时无效

nzkunb0c  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(156)

我试图连接到一个远程服务器使用外部数据 Package 器之间传输数据库的一些数据,但关键是获取“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;

DETAIL:SSL支持未编译时,sslmode值“require”无效
我试过使用"sslmode=require"连接到psql-但似乎没有帮助。在创建服务器时,我还将sslmode作为一个标志。我连接的postgres示例在Heroku上。如果我连接到远程服务器上的另一个数据库,则会运行查询-但从本地数据库连接时会失败。如何修复SSL支持未编译的问题?

dsf9zpds

dsf9zpds1#

本地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

l5tcr1uw

l5tcr1uw2#

如果你在Lambda中遇到这个错误,你应该使用一个带有ssl的psycopg2版本(例如:this repo有psycopg2,有和没有ssl)。

相关问题