Com configurações emprestadas de um servidor semelhante executando Postgres 9.4.1 e pgbouncer 1.6.1, tenho vários usuários se conectando ao banco de dados por meio de pgbouncer na porta 6543. Também tenho um segundo servidor executando PostgreSQL 9.4.5 onde verifiquei que todos os usuários só podem se conectar diretamente aos bancos de dados (na porta 5432) usando TLS/SSL definido como verify-full
.
No entanto, preciso criar um ambiente combinando essas configurações: um onde todos os usuários se conectem ao banco de dados via TLS/SSL com pooling de conexão através do pgbouncer. Isso significa que preciso usar a nova funcionalidade TLS/SSL no pgbouncer 1.7 lançado recentemente (a partir de 18 de dezembro de 2015), mas além da documentação dos novos parâmetros TLS , não encontrei nenhum exemplo disponível demonstrando a nova funcionalidade nem tinha qualquer sucesso por conta própria estabelecendo uma conexão válida através do pgbouncer usando TLS/SSL no meu segundo servidor.
Incluí trechos pertinentes do postgresql.conf
, pg_hba.conf
, & pgbouncer.ini
do meu segundo servidor.
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
O pgbouncer inicia, no entanto, quando tento me conectar como qualquer usuário, mas digamos que quero ser o usuário 'lalligood', recebo o seguinte erro:
ERROR: no such user: lalligood
pgbouncer.log contém a seguinte linha para cada tentativa:
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)
Posso fornecer mais informações se necessário. Se alguém tiver algum conselho / sugestão sobre o que posso estar esquecendo para fazer isso funcionar, agradeço muito a ajuda!