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

PostgreSQL user password change from MD5 to scram-sha-265

我正在查看这个 问题以弄清楚如何将 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不受影响?

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

不寻常的主要原因是使用 password_encryption = scram-sha-256,客户端无论如何都必须了解新的散列方法才能根据用户输入的密码计算散列密码。那么为什么不将它也用于更安全的身份验证呢?

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

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

  2. 在身份验证过程中,服务器会要求客户端生成密码的散列值(已经从上一步散列),其中包含一定的盐。然后通过线路发送这个“双重散列”密码。

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