Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поднятие и настройка SSL / 19 сообщений из 19, страница 1 из 1
12.03.2015, 16:10
    #38902686
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Всем добрых суток!
Решил поковырять соединение по SSL, задолбал гугл и яндекс, перечитал мануалы Postgres, но конкретно для чайничка нет ничего.. хотел бы наставления получить, как что делать и в какой последовательности. На данный момент дела обстоят так:
1) Поставил OpenSSL (запускается ровно только от админа)
2) Сгенерил сертификаты и ключи: server.key, server.crt, root.key, root.crt. как получить файлик root.clr получить не смог, недопёр как...
3) В файле postgresql.conf включил:
авторssl = on # (change requires restart)
ssl_cert_file = 'server.crt' # (change requires restart)
ssl_key_file = 'server.key' # (change requires restart)
но также не допёр до следующих строк:
автор#ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
#ssl_ca_file = '' # (change requires restart)
#ssl_crl_file = '' # (change requires restart)
На этом дело встало... Где я запнулся или не доделал? И какие действия дальше? А именно - куда клиенту нужно ставить сертификат, или как использовать приложением? Postgres под Windows, клиенты тоже под окном
...
Рейтинг: 0 / 0
16.03.2015, 07:55
    #38905478
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Неужели этим никто не занимался? С OpenSSL разобрался, как Postgre настроить, непойму
...
Рейтинг: 0 / 0
16.03.2015, 11:19
    #38905644
grufos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Midgard90,

Посмотрите вот этот докладик
http://www.pgcon.org/2009/schedule/events/120.en.html

Еще можно почитать книгу
http://www.ozon.ru/context/detail/id/19133383/
Администрирование PostgreSQL 9. Книга рецептов
там на странице 159-161 описывается как всё это настроить и использовать.
...
Рейтинг: 0 / 0
17.03.2015, 13:07
    #38906989
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Всё вроде получается, спасибо за статью и книгу, её уже листал)
Не получается сгенерить crl файл в OpenSSL, выкидывает ошибку чтения файла /DemoCA/private/cakey.pem... корневые, клиенсткие и ключи сгенерились. Сервер Postgres я так понял из за этого crl не хочет нормально стартовать... Или может кто скажет что в нём должно быть? Пробовал пустой txt сделать crl, фокус не вышел.. В нём же откатанные сертификаты раняться? если таковых нет, то и файл пустой? или я ошибаюсь?
...
Рейтинг: 0 / 0
18.03.2015, 10:37
    #38907957
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
В принципе добился желаемого, опишу, вдруг кому понадобиться:
1) установил OpenSSL (можно установщиком, можно собрать в студии)
2) в консоли OpenSSL Генерируем необходимые файлы:
авторсоздаём корневой сертификат и ключ:
openssl req -config conf.cnf -new -x509 -newkey rsa:2048 -days 3650 -out ca.crt -keyout ca.key

Создаём файл отзывов:
openssl ca -config conf.cnf -gencrl -out server.crl


Запрос на сертификат клиента
openssl req -config conf.cnf -newkey rsa:2048 -days 1825 -keyout server.key -out server.csr

Подписываем запрос на сертификат корневого сертификата сервера:
openssl ca -config conf.cnf -days 1826 -policy policy_anything -keyfile ca.key -cert ca.crt -in server.csr -out server.crt

В итоге получаем 4 файлика.

Далее в postgresql.conf меняем следующие строки и указываем наши файлы (должны лежать в папке data):
авторssl = on # (change requires restart)
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
# (change requires restart)
#ssl_prefer_server_ciphers = on # (change requires restart)
#ssl_ecdh_curve = 'prime256v1' # (change requires restart)
#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
ssl_cert_file = 'server.crt' # (change requires restart)
ssl_key_file = 'server.key' # (change requires restart)
ssl_ca_file = 'ca.crt' # (change requires restart)
ssl_crl_file = 'server.crl' # (change requires restart)

В файле pg_hba.conf добавляем или заменяем запись:
автор# IPv4 local connections:
hostssl all all all trust


Перезапускаем postgres (не службу, а консолью):
авторpg_ctl -D C:\pgsql\data -l logfile.log stop
pg_ctl -D C:\pgsql\data -l logfile.log start
postgres.exe -D "c:\pgsql\data" -l
psql -U postgres -h localhost

Сервер должен спросить пароль сертификата, и выдать сообщение:
авторSSL-соединение (протокол: TLSv1.2, шифр: ECDHE-RSA-AES256-GCM-SHA384, бит: 256,
сжатие: выкл.)


Всё работает, но неудобная ситуация: при подключении клиентской проги или того-же pg-admina, выполнение любого запроса всегда требует ввести пароль от сетрификата, притом требует только в консоле, где ребутили сервер. Случайно заметил..
Кажется идиотизмом, но спрашивает сервер... как с этим быть? Отключить где или в запросах посылать или?
Пробовал сертификат установить в винду, толку как и ождалось не дало. Или где я промахнулся?
...
Рейтинг: 0 / 0
19.03.2015, 15:36
    #38910031
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Всё, добился желаемого в полном объёме. Можно закинуть как статьёй "Настройка SSL в Postgres под Windows", пригодиться. Тестировал на 2х машинах, в локальной сети и через инет.
Последовательность действий:
1) Качаем OpenSSL , устанавливаем. При вопросе размещения своих файлов выбираем "/bin", то есть в свою корневую папку, а не в винду.
2) Запускаем OpenSSL (если напишет что не сумел прочитать файл openssl.conf перезапускаем от админа). В папке bin создаём папку (у меня "1"), в неё будем кидать что сгенерится.
3) В консоли вбиваем следующие команды (генерируем ключи и сертификаты для postgre):

req -new -text -out 1/server.req
//Потребуется придумать пароль, повторить его ввод
//После генерации потребуется заполнить несколько полей данных (желательно правдивых)

ca -gencrl -out 1/root.crl
//Генерим файл-список отзывов сертификатов.
//На этом этапе может выскочить ошибка индексации в файлах serial,cacert.pem или других. Решение беды - создаём в папке DemoCA файл crlnumber, без разрешения пустой. Скорее всего его нет по указанной директории.

rsa -in privkey.pem -out 1/server.key
//Генерим ключ сертификата сервера, потребуется ввод придуманного ранее пароля.

req -x509 -in 1/server.req -text -key 1/server.key -out 1/server.crt -days 3650
//Подписываем и создаём сам сертификат на 10 лет (можно меньше/больше).

rsa -in privkey.pem -out 1/client.key
//Аналогично генерим ключ сертификата клиента, также ввод того-же пароля

req -x509 -in 1/server.req -text -key 1/client.key -out 1/client.crt -days 3650
//Снова подписываем.

В итоге получаем 6 файлов: server.req, server.key, server.crt, server.crl, client.key, client.crt.

4) файлы server.key, server.crt, server.crl кидаем в ..\postgresql\...\data\ (где лежат файлы конфига)

5) в postgresql.conf строку ssl = off меняем на ssl = on , более можно не усердствовать, закрываем.
6) в файле pg_hba.conf добавляем, а лучше меняем хосты:
автор#host all all all trust
hostssl all all all trust
дабы убедиться в исключительном ssl...
7) Ребутим сервер, проверяем запуск службы postgresql (при включенном ssl служба не всегда хочет сама стартовать, пока не разобрался в причине)
8)На клиентской машине, либо на самом сервере заходим: C:\Users\...\AppData\Roaming\postgresql\ , если такой папки нет, создаём, и в неё кидаем файл client.crt (можно установить сертификат, но погоды не изменит)
9) Через ODBC подключения в настройках поля SSL mode - verify-full или verify-ca , проверяем соединение, должно быть успешным.
10) Чтобы окончательно убедиться в работоспособности, консольно заходим в psql:
pg_ctl -D "C:\Program Files\PostgreSQL\...\data" -l logfile.log start Должно вывалиться сообщение вида:
SSL-соединение (шифр: DHE-RSA-AES256-SHA, бит: 256)

на всех клиентах при подключении стоит закинуть файл в указанную папку.
...
Рейтинг: 0 / 0
01.04.2015, 12:11
    #38923671
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Midgard90 ca -gencrl -out 1/root.crl

откуда взять эту программу?
openssl ca ..... пишет ошибку
...
Рейтинг: 0 / 0
02.04.2015, 10:11
    #38924559
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
crauseMidgard90 ca -gencrl -out 1/root.crl

откуда взять эту программу?
openssl ca ..... пишет ошибку

пришлось использовать OpenSSL двух сборок.
грешу на кривизну своих рук.
ТСМожно закинуть как статьёй "Настройка SSL в Postgres под Windows"
существует ли статья? если ТС делал под виндой то у него ошибка в слешах, в windows пути указываются "\"


знатоки почему openssl требует openssl.cnf или openssl.cfg зависит от сборки ???
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.08.2016, 17:46
    #39291265
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Да, зависит от сборки.
Сейчас тоже столкнулся с:
авторca -gencrl -out 1/root.crl
Вываливает кучу ошибок. нынешняя версия: 1.0.2h x64. На момент написания статьи была вроде 0.9.8 или как-то так...
Кто может разбирал подобное?:
авторOpenSSL> ca -gencrl -out C:\iis\crl.crl
Using configuration from C:\OpenSSL-Win64\bin\openssl.cfg
Error opening CA private key c:/iis/private/cakey.pem
4024:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\bss_file.c:398:fopen('c:/iis/private/cakey.pem','rb')
4024:error:20074002:BIO routines:FILE_CTRL:system lib:.\crypto\bio\bss_file.c:400:
unable to load CA private key
error in ca
в конфигурационном файле вообще нет таких путей, папок или чего подобного, чё он туда лезет то?
...
Рейтинг: 0 / 0
12.08.2016, 17:54
    #39291270
Midgard90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Да, и слеши он кушает и тот и другой без разницы)
...
Рейтинг: 0 / 0
16.09.2016, 11:38
    #39310121
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
авторВсё, добился желаемого в полном объёме. Можно закинуть как статьёй "Настройка SSL в Postgres под Windows", пригодиться. Тестировал на 2х машинах, в локальной сети и через инет.
Последовательность действий: Сделал то же самое, тоже пишет все окей ssl и все дела, но подключаются клиенты на ура, даже у кого нет сертификатов и никогда не было
...
Рейтинг: 0 / 0
16.09.2016, 15:41
    #39310361
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Даже пароль не нужен КАК ВКЛЮЧИТЬ ПАРОЛЬ
Если конектиться с другого компьютера и не вводить пароль то подключается.
hostssl all all 0.0.0.0/0 md5
...
Рейтинг: 0 / 0
16.09.2016, 15:53
    #39310385
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Короче пользователь postgres имеет доступ ко всему без пароля.
Это мега о%ный косяк, такое нельзя даже в бэту выкладывать
9.5 9.6
Наверняка можно что-то сделать, подскажите что?
С самого начала мне эта БД не нравилась...
...
Рейтинг: 0 / 0
16.09.2016, 16:07
    #39310414
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
imobileКороче пользователь postgres имеет доступ ко всему без пароля.
Это мега о%ный косяк, такое нельзя даже в бэту выкладывать
9.5 9.6
Наверняка можно что-то сделать, подскажите что?
С самого начала мне эта БД не нравилась...

Это косяк вашей настройки базы.
1)покажите весь pg_hba.conf незакоментированный
2)делали вы релоад/рестарт базы после изменений в pg_hba.conf


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
19.09.2016, 10:01
    #39311162
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Maxim BogukimobileКороче пользователь postgres имеет доступ ко всему без пароля.
Это мега о%ный косяк, такое нельзя даже в бэту выкладывать
9.5 9.6
Наверняка можно что-то сделать, подскажите что?
С самого начала мне эта БД не нравилась...

Это косяк вашей настройки базы.
1)покажите весь pg_hba.conf незакоментированный
2)делали вы релоад/рестарт базы после изменений в pg_hba.conf


--
Maxim Boguk
www.postgresql-consulting.ru
авторhostssl all all all trust

hostssl all all 127.0.0.1/32 md5
hostssl all all 0.0.0.0/0 md5
Меняли много. Одна из последних.
Вторая строчка не обязательная. А если первую не написать, то локалхост подсоединится не может, хотя другие без пароля - пожалуйста
...
Рейтинг: 0 / 0
19.09.2016, 10:07
    #39311165
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Maxim Boguk2)делали вы релоад/рестарт базы после изменений в pg_hba.conf

Перезагрузка компьютера считается?
...
Рейтинг: 0 / 0
19.09.2016, 11:31
    #39311200
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
imobile,

hostssl all all all trust

ну так что вы хотите то с включенным trust для всех хостов. при подключении выбирается первая подходящая строка, которая матчит хост и из нее берется метод аутентификации.

для локальных подключений существует специальный метод peer. trust вообще не стоит использовать нигде кроме тестовых машин.
...
Рейтинг: 0 / 0
19.09.2016, 11:57
    #39311219
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
Alexiusimobile,

hostssl all all all trust

ну так что вы хотите то с включенным trust для всех хостов. при подключении выбирается первая подходящая строка, которая матчит хост и из нее берется метод аутентификации.

для локальных подключений существует специальный метод peer. trust вообще не стоит использовать нигде кроме тестовых машин.Видимо вы не дочитали до конца мое сообщение. Пробовал без этой строчки
...
Рейтинг: 0 / 0
19.09.2016, 12:00
    #39311221
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поднятие и настройка SSL
imobileAlexiusimobile,

пропущено...


ну так что вы хотите то с включенным trust для всех хостов. при подключении выбирается первая подходящая строка, которая матчит хост и из нее берется метод аутентификации.

для локальных подключений существует специальный метод peer. trust вообще не стоит использовать нигде кроме тестовых машин.Видимо вы не дочитали до конца мое сообщение. Пробовал без этой строчки

без этой строчки вы явно не рестартовали/релоадили базу после изменений.
Потому что именно она у вас работает.


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поднятие и настройка SSL / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]