pgbouncer 和 ssl 连接

Roo*_*lem 6 postgresql ssl pgbouncer

我有三台服务器,其中两台运行 postgres 9.5.3,第三台运行 pgbouncer 1.7.2。

我可以通过 pgbouncer 访问两个 postgresql 实例之一,一切都很完美。其他 postgresql 服务器,我们称之为 P1 不在我的控制之下,我必须使用 ssl 连接,因此它得到了,因此以下行被添加到该服务器 pga_hba.conf

hostssl    all       all             ###.###.###.###/32               md5
Run Code Online (Sandbox Code Playgroud)

我可以使用 psql 从 pgbouncer 服务器连接到 P1,没有任何问题。但是当我通过 pgbouncer 连接到 P1 时,我收到此错误消息

psql: ERROR:  no pg_hba.conf entry for host "XXX.XXX.XXX.XXX", user "myuser", database "mydb", SSL off
Run Code Online (Sandbox Code Playgroud)

这是我的 pgbouncer.ini

[databases]
my_database = host=xxx.xxx.xxx.xxxx port=5432 dbname=mydb user=myuser password=mypassword client_encoding='UTF8'

[pgbouncer]
listen_addr = *
listen_port = 5432
auth_type = md5 

auth_file = /etc/pgbouncer/userlist.txt
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid

admin_users = rms_admin 

pool_mode = session

server_reset_query = DISCARD ALL
server_check_query = select 1

default_pool_size = 40

stats_period=300

log_pooler_errors = 1
Run Code Online (Sandbox Code Playgroud)

我尝试将sslmode=require添加到 my_database 的连接字符串上,并与ignore_startup_parameters结合使用,但这导致 pgbouncer log 中出现以下错误。

ERROR skipping database my_database because of unknown parameter in connstring: sslmode
Run Code Online (Sandbox Code Playgroud)

我怎样才能让 pgbouncer 建立一个 ssl 连接?

Dan*_*ité 1

pgbouncer 和服务器之间的 TLS 不是通过连接字符串启用的,而是通过 启用的server_tls_sslmode,默认情况下禁用。

它至少应设置为,并且可能还需要prefer一些其他参数,具体取决于另一端的 TLS 配置。server_tls_*

有关所有详细信息,请参阅https://pgbouncer.github.io/config.html#tls-settings 。