通过 SSL 进行 PostgreSQL

通过 SSL 进行 PostgreSQL

目标

我想要通过 SSL 访问远程 PostgreSQL 数据库。

问题

数据库服务器没有自己的证书。

整体情况

我们有两个不同的服务器,运行同一 Web 应用程序的不同版本。

第一个(我们称之为Fizz)具有 SSL 证书,运行 nginx 并且 webapp 可以(仅)通过 HTTPS 访问。

第二个 ( Buzz) 没有 SSL 证书。
为了提供某种程度上的安全连接,webapp 只能通过 的FizzSSL 连接访问。
为了实现这一点,Fizz的 nginx 配置为Buzz通过其自己的 SSL 连接代理 的 webapp。
拒绝来自其他机器的 HTTP(S) 连接Buzz

这意味着https://fizz/A显示Fizzweb 应用程序和https://fizz/B顯示Buzz的。

这很好用。

但现在我们需要安全访问上运行的 (postgres) 数据库Buzz

由于我们在公司顶层运行防火墙,因此我无法直接访问它,但它可以通过 SSH 隧道工作。

如果我想通过 SSL 访问,我必须通过 访问它Fizz。但我不知道该怎么做。我希望我可以配置 nginx 来执行与对 webapps 执行的操作类似的操作。

这有可能吗?我不确定如何配置。我在网上找到的所有信息都涉及 http 和 webserver。

或者还有其他方法,也许 SSH/SSL 隧道并将Fizz流量重定向到Buzz

我有点失落。

编辑 2016-09-22

我画了一张图片来让情况更清楚一点(希望如此): 图表 绿色路径是正常工作的。我可以Fizz通过 https 进行访问,并且 nginx 会建立连接来Buzz传送 Web 应用程序。

橙色路径是我想要做的。基本上是同样的事情,但不是通过网站,而是通过数据库连接。

我不确定 nginx 是否可以实现。

编辑 2016-09-23

根据 Tims 链接我现在进行以下设置:

绕过代理的 SSH 隧道:

5443:localhost:5443

以及一条 nginx 规则:

stream {
    listen 5443 ssl;
    proxy_pass buzz:5432
}

想法:

  • 建立与 Fizz 的 ssh 连接
  • 打开隧道 5443:localhost:5443
  • 让客户端连接到 localhost:5443
  • 让 nginx 监听 5443 并
  • 重定向至 Buzz:5432

这是数据库监听的端口。

ncat测试与回报的 联系Close: Result too large

所以我不确定,直到连接起作用为止。

相关内容