我正在研究这个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时不会受到影响?
答案 0 :(得分:0)
即使将md5
更改为pg_hba.conf
,也可以在password_encryption
中保留scram-sha-256
作为身份验证方法。这样做是不寻常的。
与众不同的主要原因是,对于password_encryption = scram-sha-256
,客户端必须始终理解新的哈希方法,以便能够根据用户输入的密码来计算哈希密码。那为什么不同时使用它进行更安全的身份验证呢?
为避免混淆,我想补充一点,PostgreSQL中有两种不同的密码哈希操作:
用户输入的密码(与用户名一起)被散列以产生实际的PostgreSQL密码,如pg_authid
中所存储。这是为了避免有人窃取密码并在其他系统上重用该密码的问题。
在身份验证过程中,服务器向客户端发出挑战,要求其生成带有特定盐的密码哈希(已从上一步中进行了哈希处理)。然后,该“双重哈希”密码通过该行发送。
换句话说,您的问题是:我们可以在第一点上使用scram-sha-256
,在第二点上使用md5
吗?