【问题标题】:Store SHA1 hash digest of a FreeRADIUS user password in PostgreSQL在 PostgreSQL 中存储 FreeRADIUS 用户密码的 SHA1 哈希摘要
【发布时间】:2014-02-05 14:12:04
【问题描述】:

我有一个带有集中用户数据库的系统,其中存储了不同应用程序的用户名和密码。 该数据库是在 PostgreSQL 中创建的。 FreeRDAIUS 通过使用 PostgreSQL 作为后端系统的 OpenLDAP 访问用户和密码。密码应该以哈希格式存储。 我已经使用存储在数据库中的 SHA1 密码测试了 FreeRADIUS,并且用户已成功通过身份验证。我存储了带有 {SHA} 的摘要,它运行良好。但是,此散列需要使用 base64 格式,并以“=”作为填充字符。我使用 ldap 实用程序 slappasswd 生成了 base64 哈希摘要。

因为实际上,我应该使用 C 函数将用户插入数据库,而可用的加密库(如 OpenSSL)仅提供十六进制哈希函数,我认为最好的方法是知道如何告诉 FreeRDAIUS 该摘要存储在数据库中的不是 base64 而是 HEX。

有人知道我该怎么做吗?似乎如果我只是将 {SHA} 放在散列值之前,它只适用于带有 FreeRADIUS 的 base64。我也想知道FreeRADIUS是否支持SHA256等其他哈希算法。

操作系统:Ubuntu 12.04 LTS PostgreSQL:9.1 FreeRADIUS:2.1.10

【问题讨论】:

    标签: postgresql ubuntu-12.04 sha freeradius


    【解决方案1】:

    当前发布的版本不支持任何 SHA-2 哈希算法。

    FreeRADIUS 2.1.10 中的 rlm_pap 模块应自动“规范化”“已知良好”密码,即将十六进制转换为二进制,并将其分配给正确的 control: 属性。这对 hexits 的工作方式与对 base64 的工作方式相同。

    更新: https://github.com/FreeRADIUS/freeradius-server/commit/0bd0f7453adb2c331a9c1127eda9c9a9fe203b2d

    【讨论】:

    • 感谢您的回答,但它似乎不接受 SHA1 十六进制摘要。正如我所说,它与 BASE64 完美配合,并且 radtest 的用户身份验证成功。我需要修改RADIUS服务器中的参数吗?
    • 不,除了auto_header(应该是yes)和encryption_scheme(应该是auto)之外,对于那个版本的服务器,rlm_pap 中没有有用的参数。确保您没有在十六进制字符串前面加上“0x”,十六进制字符串没有被截断,没有空格,并且您的十六进制字符串正好由 40 个十六进制组成。
    猜你喜欢
    • 2015-05-27
    • 2013-03-15
    • 2017-06-05
    • 2011-04-30
    • 2015-10-07
    • 2010-10-11
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多