猫言猫语

严以律己·宽以待人·自强不息·知行合一

使 OpenLDAP 支持 bcrypt 密码

| 使 OpenLDAP 支持 bcrypt 密码已关闭评论

一、编译 openldap 源码

yum install -y wget git libtool libdb-devel libtool-ltdl-devel krb5-devel
wget https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.57.tgz
tar zxvf openldap-2.4.57.tgz
cd openldap-2.4.57
./configure --libdir=/usr/lib64 --enable-modules
make depend
make

二、编译 bcrypt 模块

cd contrib/slapd-modules/passwd
git clone https://github.com/wclarie/openldap-bcrypt.git bcrypt
cd bcrypt
make

mv pw-bcrypt.la /usr/lib64/openldap/
mv .libs/pw-bcrypt.so /usr/lib64/openldap/
mv .libs/pw-bcrypt.so.0 /usr/lib64/openldap/
mv .libs/pw-bcrypt.so.0.0.0 /usr/lib64/openldap/

三、安装 bcrypt 模块

ldapadd -Y EXTERNAL -H ldapi:/// <<EOF
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: pw-bcrypt.la
EOF
slappasswd -o module-load=pw-bcrypt -h {BCRYPT} -s 123456
{BCRYPT}$2b$08$kpeiai4iNHg9zVl1/Lze8u48NBoboQRfHrSbvr9oEZFa9N18nVpFe

四、测试 bcrypt 密码

这里的 userPassword 里包含 $ 特殊字符,所以我们必须给 EOF 加一对双引号。

ldapadd -D "cn=admin,dc=wuweixin,dc=com" -W <<"EOF"
dn: uid=user,dc=wuweixin,dc=com
objectClass: top
objectClass: account
objectClass: simpleSecurityObject
uid: user
userPassword: {BCRYPT}$2b$08$kpeiai4iNHg9zVl1/Lze8u48NBoboQRfHrSbvr9oEZFa9N18nVpFe
EOF

使用 ldapwhoami 测试 uid=user,dc=wuweixin,dc=com BCRYPT 密码能否正常

ldapwhoami -x -D "uid=user,dc=wuweixin,dc=com" -w123456

评论已关闭。