PostgreSQL用户密码从MD5更改为scram-sha-265

时间:2018-11-26 05:46:00

标签: postgresql authentication password-hash

我正在研究这个Change PostgreSQL password encryption from MD5 to SHA问题,以找出如何将Postgres中用户密码的哈希值更改为MD5以外的其他值,因为据我所知,它现在已经基本过时了。

但是我很好奇服务器的pg_hpa.conf文件中是否需要进行更改,根据本教程https://blog.bigbinary.com/2016/01/23/configure-postgresql-to-allow-remote-connection.html,您需要向其中添加以下内容:

host    all             all              0.0.0.0/0                       md5
host    all             all              ::/0                            md5

是否需要更改“ md5”?还是仅在这里指定密码是必需的,并且在将哈希函数更改为scram-sha-256时不会受到影响?

1 个答案:

答案 0 :(得分:0)

即使将md5更改为pg_hba.conf,也可以在password_encryption中保留scram-sha-256作为身份验证方法。这样做是不寻常的。

与众不同的主要原因是,对于password_encryption = scram-sha-256,客户端必须始终理解新的哈希方法,以便能够根据用户输入的密码来计算哈希密码。那为什么不同时使用它进行更安全的身份验证呢?

为避免混淆,我想补充一点,PostgreSQL中有两种不同的密码哈希操作:

  1. 用户输入的密码(与用户名一起)被散列以产生实际的PostgreSQL密码,如pg_authid中所存储。这是为了避免有人窃取密码并在其他系统上重用该密码的问题。

  2. 在身份验证过程中,服务器向客户端发出挑战,要求其生成带有特定盐的密码哈希(已从上一步中进行了哈希处理)。然后,该“双重哈希”密码通过该行发送。

换句话说,您的问题是:我们可以在第一点上使用scram-sha-256,在第二点上使用md5吗?