PostgreSQL 8.0中的SSL连接错误

时间:2017-06-20 08:39:00

标签: postgresql ssl postgresql-8.0

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

以下是我测试连接的方法(我将比较8.0和9.0设置,因为它们非常相似)。我正在测试本地机器上的连接,它是在本地完成的,仅用于测试,所以不要告诉我为本地主机关闭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"因为没有"证书"选项(我试过"信任"和" md5"也)我尝试了不同的地址 - :: 1/128,偶数"所有"。结果始终相同 - 如果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?

2 个答案:

答案 0 :(得分:1)

使用PostgreSQL 8.0的人并没有充分考虑安全性来关心SSL连接,对吗?

例如,由于数据库受CVE-2013-1899约束,因此任何对服务器具有网络访问权限的人都可以在数据库中写入任意文件。

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

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

答案 1 :(得分:0)

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

-sha1

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