Postgres 9.4.1 および pgbouncer 1.6.1 を実行している同様のサーバーから借用した設定で、複数のユーザーがポート 6543 で pgbouncer を介してデータベースに接続しています。に設定された TLS/SSL を使用して、(ポート 5432 で) データベースに直接接続することしかできませんverify-full
。
ただし、これらの構成を組み合わせた環境を作成する必要があります。すべてのユーザーが TLS/SSL を介してデータベースに接続し、pgbouncer を介した接続プールを使用する環境を作成する必要があります。つまり、最近リリースされた (2015 年 12 月 18 日現在) pgbouncer 1.7 で新しい TLS/SSL 機能を使用する必要があることを意味しますが、新しい TLS パラメーターのドキュメントは別として、新しい機能を示す利用可能な例は見つかりませんでした。 2番目のサーバーでTLS / SSLを使用してpgbouncerを介して有効な接続を確立することに成功しました。
postgresql.conf
、、、pg_hba.conf
およびpgbouncer.ini
2 番目のサーバーからの適切な抜粋を含めました。
postgresql.conf:
ssl = on # (change requires restart)
ssl_cert_file = 'server.crt' # (change requires restart)
ssl_key_file = 'server.key' # (change requires restart)
ssl_ca_file = 'root.crt' # (change requires restart)
pg_hba.conf:
hostssl all all 10.10.5.0/24 cert
pgbouncer.ini:
;
; pgbouncer configuration
;
[databases]
mydatabase = host=localhost port=5432 dbname=mydatabase
;
[pgbouncer]
listen_port = 6543
listen_addr = *
admin_users = lalligood, postgres
logfile = /tmp/pgbouncer.log
pidfile = /tmp/pgbouncer.pid
ignore_startup_parameters = application_name
server_reset_query = DISCARD ALL;
pool_mode = session
max_client_conn = 1000
default_pool_size = 300
log_pooler_errors = 0
; Improve compatibility with Java/JDBC connections
ignore_startup_parameters = extra_float_digits
; USER AUTHENTICATION (old way commented out with new lines below)
;auth_type = md5
;auth_file = pgbouncer/users.txt
auth_type = hba
auth_hba_file = pg_hba.conf
; TLS SETTINGS (NEW STUFF!)
client_tls_sslmode = verify-full
client_tls_key_file = server.key
client_tls_cert_file = server.crt
client_tls_ca_file = root.crt
server_tls_sslmode = verify-full
server_tls_key_file = /tmp/pgb_user.key
server_tls_cert_file = /tmp/pgb_user.crt
server_tls_ca_file = root.crt
pgbouncer は起動しますが、ユーザー 'lalligood' として接続しようとすると、次のエラーが発生します。
ERROR: no such user: lalligood
pgbouncer.log には、試行ごとに次の行が含まれます。
2016-01-13 16:00:36.971 2144 LOG C-0xcad410:
(nodb)/(nouser)@10.10.5.194:54848 closing because: No such user:
lalligood (age=0)
必要に応じて、さらに情報を提供できます。これを機能させるために見落としている可能性があることについて誰かがアドバイス/提案を持っている場合は、助けていただければ幸いです!