【问题标题】:SSL connection error in PostgreSQL 8.0PostgreSQL 8.0 中的 SSL 连接错误
【发布时间】:2017-06-20 08:38:59
【问题描述】:

我们有一个连接到 PostgreSQL 8.0、9.0 或 9.5(不同客户端的不同版本)的应用程序。最近我们决定添加 SSL 连接以提高安全性。在 9.0 和 9.5 上一切似乎都很好,但在 8.0 中则不然。

这是我测试连接的方法(我将比较 8.0 和 9.0 的设置,因为它们非常相似)。我正在本地机器上测试连接,它是在本地完成的,只是为了测试所以不要告诉我为 localhost 关闭 ssl,这不是我要找的答案。

我已准备好所有需要的证书。服务器端:

root.crt
server.crt
server.key

我已将这些文件放在 9.0 和 8.0 PostgreSQL 安装的 \data 文件夹中。

我有客户证书:

postgresql.crt
postgresql.key

它们位于同一台机器上的 \appdata\Roaming\postgresql 文件夹中。

我在 8.0 和 9.0 中都编辑了 postgresql.conf 并设置了这个选项:

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 ”。结果始终相同 - 如果 hostssl 选项是唯一可用的,我将无法连接到 8.0 服务器。我收到此错误:

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?

【问题讨论】:

    标签: postgresql ssl postgresql-8.0


    【解决方案1】:

    任何使用 PostgreSQL 8.0 的人都没有足够关注安全性来关心 SSL 连接,对吧?

    例如,由于数据库受CVE-2013-1899 约束,任何可以通过网络访问服务器的人都可以覆盖数据库中的任意文件。

    也就是说,我认为问题在于 8.0 服务器使用旧版本的 OpenSSL,例如一个没有针对 CVE-2009-3555 的修复程序,以及包含修复程序的更高版本的 OpenSSL 拒绝握手。

    您可以考虑在 8.0 服务器上升级 OpenSSL。

    【讨论】:

    • 是的,我知道 PostgreSQL 8.0 有很多安全性和其他问题,仍然有客户使用它。无论如何,谢谢,可能是旧的 OpenSSL 问题。
    【解决方案2】:

    最后,我设法建立了与 PostgreSQL 8.0 的 SSL 连接。使用 OpenSSL 制作证书文件 (*.crt) 时,应将此选项添加到命令提示符命令中:

    -sha1

    否则,它使用默认的 SHA-256,但 PostgreSQL 8.0 中包含的旧 openssl 版本不支持此算法。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 1970-01-01
      • 2011-03-18
      • 2023-01-29
      • 2014-02-06
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多