Ошибка SSL-соединения в PostgreSQL 8.0

У нас есть приложение, которое подключается к PostgreSQL 8.0, 9.0 или 9.5 (разные версии для разных клиентов). Недавно мы решили добавить SSL-соединение для большей безопасности. Все кажется хорошим на 9.0 и 9.5, но не на 8.0.

Вот что я делаю, чтобы проверить соединение (я сравню настройки 8.0 и 9.0, так как они очень похожи). Я тестирую соединение на локальной машине, оно выполняется локально только для тестирования, поэтому не говорите мне отключить ssl для localhost, это не тот ответ, который я ищу.

Я подготовил все необходимые сертификаты. Сторона сервера:

root.crt
server.crt
server.key

И я поместил эти файлы в папки \ data в установках PostgreSQL 9.0 и 8.0.

У меня есть клиентские сертификаты:

postgresql.crt
postgresql.key

Они находятся в папке \appdata\Roaming\postgresql на одном компьютере.

Я отредактировал postgresql.conf в 8.0 и 9.0 и установил эту опцию:

ssl = on (Я пробовал ssl = true тоже)

В pg_hba.conf у меня есть только один вариант подключения:

TYPE     DATABASE USER CIDR-ADDRESS   METHOD

9,0:

hostssl   all    all   ::1/128   cert

8,0

hostssl   all    all   127.0.0.1/32 md5 clientcert=1

В 8.0 я использую "md5 clientcert=1", потому что нет опции "cert" (я тоже пробовал "trust" и "md5"), и я пробовал также разные адреса -::1/128, даже "all". Результат всегда один и тот же - я не могу подключиться к серверу 8.0, если доступна только опция hostssl. Я получаю эту ошибку:

SSL error: tlsv1 alet decrypt error FATAL: no pg_hba.conf entry for host "127.0.0.1", user "SU", database "template1", SSL off

У меня нет проблем с подключением к 9.0 (и к 9.5). Я использую PgAdmin III, чтобы попытаться подключиться, потому что, если я подключусь, используя его, я тоже смогу подключиться к серверу с приложением.

У кого-нибудь есть идея, почему я не могу подключиться через SSL к PostgresSQL 8.0?

2 ответа

Решение

Тот, кто использует PostgreSQL 8.0, недостаточно заботится о безопасности, чтобы заботиться о соединениях SSL, верно?

Например, поскольку база данных является объектом CVE-2013-1899, любой, кто имеет сетевой доступ к серверу, может записывать поверх произвольных файлов в базе данных.

Тем не менее, я предполагаю, что проблема в том, что сервер 8.0 использует старую версию OpenSSL, например, без исправления для CVE-2009-3555, а более поздние версии OpenSSL, содержащие исправление, отказываются от рукопожатия.

Вы можете рассмотреть возможность обновления OpenSSL на сервере 8.0.

Наконец мне удалось установить SSL-соединение с PostgreSQL 8.0. При создании файлов сертификатов (*.crt) с OpenSSL этот параметр следует добавить в команды командной строки:

-sha1

В противном случае он использует по умолчанию SHA-256, но этот алгоритм не поддерживается в старой версии openssl, включенной в PostgreSQL 8.0.

Другие вопросы по тегам