2017-02-08 3 views
1

Я пытаюсь настроить Postgres для получения соединений с зашифрованными паролями md5. Я читал множество руководств и следил за инструкциями, но все же я не увенчался успехом.Настройка Postgres для tcp md5 в среде докеров

У нас есть несколько контейнеров-докеров, один из которых представляет собой контейнер Postgres 9, который мы настраиваем с использованием сценария init_db.sh. Окончательная конфигурация на работающем контейнере:

listen_addresses = '*' 
local all all md5 
host all all all md5 

Running: Lsof -i TCP: 5432 (я бегу на моем Mac в настоящее время), производится следующим образом:

COMMAND  PID USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
com.docke 17454 sigals 36u IPv4 0x13ec351b99f025cd  0t0 TCP *:postgresql (LISTEN) 
com.docke 17454 sigals 37u IPv6 0x13ec351b8ce8a025  0t0 TCP localhost:postgresql (LISTEN) 

Когда я начинаю контейнер работает с зашифрованным паролем, я получаю: ERROR org.apache.tomcat.jdbc.pool.ConnectionPool: 182 - Невозможно создать начальные соединения пула.

2017-02-08T14:07:43.438478547Z org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser" 

Когда я помещаю пароль как открытый текст, он работает.

Когда я настроил IP только на localhost, работали как зашифрованные, так и незашифрованные пароли.

Что я настроил неправильно?

+0

что вы имеете в виду под «Когда я поставил пароль в незашифрованном виде это работает.» .. Где вы положили пароли? –

+0

Это приложение для спринтер-загрузки, работающее с Hibernate, пароль находится в application.properties в свойстве, называемом spring.datasource.password –

+0

, тогда вы, вероятно, путаете 'md5' у вас в' hba.conf' с хешем md5, который вы передаете в db для аутентификации? .. –

ответ

0

According to docs:

md5 Требовать от клиента поставить двойной MD5-хэш пароля для аутентификации. Подробности см. В разделе 20.3.2.

пароль Требовать от клиента предоставить незашифрованный пароль для аутентификации . Поскольку пароль отправляется в текстовом виде по сети , это не должно использоваться в ненадежных сетях. Подробности см. В разделе 20.3.2.

Соединение jdbc будет иметь пароль hash, который вы передаете в самой строке соединения - вам не нужно самостоятельно md5.

Также смотрите здесь: https://stackoverflow.com/a/39038852/5315974

+0

Возможно, это потому, что английский не мой первый язык, но для меня это означает, что Postgres может получить зашифрованные пароли MD5 и сравнить их с зашифрованным исходным паролем. Кроме того, когда моя конфигурация была: все все 127.0.0.0/24 md5 Моя весенняя загрузка с приложением Hibernate работала даже с зашифрованным паролем.Конечно, я не сомневаюсь в тебе, я просто смущен –

+0

позволяет так выразиться. https://www.postgresql.org/docs/9.2/static/protocol-flow.html у вас есть «AuthenticationMD5Password» в вашем коде подключения? Если нет - не делайте хеш-пароль самостоятельно. Если вы сделаете - извините, вы все сделаете правильно. теперь почему вы можете войти с неправильным (хэшированным) паролем, имея «host all all 127.0.0.0/24 md5' в hba - потому что у вас есть« доверие »для вашего соединения до этой строки. Сделайте что-нибудь, если они выглядят разумно? –

+0

Нет, я удалил доверие –

Смежные вопросы