Назад | Перейти на главную страницу

PostgreSQL через SSL

Цель

Я хочу получить доступ к удаленной базе данных PostgreSQL через SSL.

Эта проблема

Сервер базы данных не имеет собственного сертификата.

Вся картина

У нас есть два разных сервера, на которых работают версии одного и того же веб-приложения.

Первый (назовем его Fizz) имеет сертификат SSL, запускает nginx, а веб-приложение доступно (только) через HTTPS.

Второй (Buzz) не имеет сертификата SSL.
Чтобы обеспечить какое-то безопасное соединение, веб-приложение доступно только через FizzSSL-соединение.
Чтобы это работало Fizznginx настроен на прокси Buzzвеб-приложение через собственное SSL-соединение.
HTTP (S) соединения с других машин отклоняются Buzz.

Это означает https: // fizz / A показывает Fizzвеб-приложение и https: // fizz / B показывает Buzzс.

Это прекрасно работает.

Но теперь нам нужен безопасный доступ к базе данных (postgres), запущенной на Buzz.

Поскольку у нас работает брандмауэр компании, я не могу получить к нему доступ напрямую, но он работает через туннелирование SSH.

Если мне нужен доступ через SSL, я должен получить к нему доступ через Fizz. И я не знаю как. Я надеялся, что смогу настроить nginx на то, что он делает с веб-приложениями.

Это вообще возможно? Я не знаю, как это настроить. Вся информация, которую я нахожу в сети, относится к http и веб-серверу.

Или есть другой способ, возможно, туннель SSH / SSL для Fizz и перенаправить трафик на Buzz?

Я немного заблудился.

Изменить 2016-09-22

Я сделал картинку, чтобы прояснить ситуацию (надеюсь): Зеленый путь - это то, что работает. Я могу получить доступ Fizz через https и nginx устанавливает соединение с Buzz который доставляет webapp.

Оранжевый путь - это то, что я хотел бы сделать. В принципе то же самое, но не с сайтом, а с подключением к базе данных.

И я не уверен, возможно ли это с nginx.

Изменить 2016-09-23

Основываясь на ссылке Tims, я теперь настроил это:

Туннель SSH для обхода прокси:

5443:localhost:5443

а также правило nginx:

stream {
    listen 5443 ssl;
    proxy_pass buzz:5432
}

Идея:

порт, который прослушивает база данных.

Проверка связи с ncat возвращается Close: Result too large

Так что я не уверен, пока не сработает соединение.