openldapを別マシンに移行(redhat系6から7)

openldapを6からredhat7へ移行する。

1) まず、設定およびアカウント情報をエクスポートする。

slapcat -b cn=config > ldap-config-20211007.ldif

slapcat > ldap-20211007.ldif

 

これらのファイル、さらにTLSまわりのファイル(ldap-config-20211007.ldifに記載あり)を移行先のマシンに持ってくる。

2) openldapはインストール済みとする。

yum reinstall openldap openldap-clients openldap-devel openldap-servers libtool-ltdl

3) slapdの設定を格納するディレクトリを用意。

mkdir /etc/openldap/slapd.d

chown ldap /etc/openldap/slapd.d

chgrp ldap /etc/openldap/slapd.d

chmod 700 /etc/open/ldap/slapd.d

 

4) 設定およびアカウント情報をインポート

slapadd -n 0 -F /etc/openldap/slapd.d -l ldap-config-20211007-tls.ldif

slapadd -F /etc/openldap/slapd.d -l ldap-20211007.ldif

chown -R ldap slapd.d

chgrp -R ldap slapd.d

 

5) selinuxを外し再起動。

vi /etc/selinux/config

SELINUX=disabled

reboot

 

6) TLS関連のファイルも設定通りの位置に置く。

 

7)  slapdの起動

systemctl start slapd.service

うまく起動しないときは、コメントに従い

journalctl -xe

で原因を探るのがよい。今回はまずselinuxが動いていてうまく起動できず、さらにTLSの設定ファイルを置かずに起動しようとしてコケた→5), 6)を施して解決。

 

8) slapdの設定ファイル(gentooの/etc/cond.f/slapd)、redhat7では/etc/sysconfig/slapd

gentooでのldap設定に習って変更。

/etc/openldap/ldap.confも同様に変更。

 

9) うまくslapdが起動できたら、slapcat、ldapsearch -xが問題なく動くか試す。

ldapsearch -x がコケる場合、ldapsearch -x -d -1とかしてデバッグレベルを上げて調べるとよい。今回はtlsの自己証明で文句を言われた。ldap.confのTLS_REQCERTをneverに変えたら通るが、下記の解決策を取る。

ldap.confのURI ldaps://....../の......は証明書作成時のCommon nameと一字一句同じでなければいけない。しかし、移行するので、IPアドレス等は同じでない。このため自己証明書を新たにつくることにした。これもgentooでの設定の場合を踏襲した。

古いほうのslapd.confにTLSまわりの設定を合うように更新して、slapd.dに食わせるが、うまく更新してくれない。slapd.dを新たに作り、slapd.confを食わせるも、当然アカウント設定が不足する。アカウント設定のみ再度インポートしてもよいのだが、今回は、基本設定のldap-config-20211007.ldifのTLSの部分だけ合うように変更し、ldap-config-20211007_tls-mod.ldifとし、

新たに用意したslapd.dにこの基本設定、アカウント設定ともにインポートし直した。

slapdを立ち上げ直し、ldap.confのURI ldaps://..../の....をCommon nameと同じにし、TLS_REQCERTをhardにしてldapsearch -xを行ったところ、問題がないようである。

 

 

2021/10/29追記

管理者のパスワードがわからない場合,なんとかリセットできないかと探し回ったが,結局,上述のやり方でslapcatで再び吸い出したconfig.ldifをいじって新たにslapd.dを作り上げるほかなかった.linuxのrootのパスワードを忘れたようなものか.

<config.ldifをどういじったか>

config.ldifのなかのolcRootPWはbase64エンコードされている.これをbase64でデーコドすると,{SSHA}・・・・・・と不可逆暗号化された文字列が出てくる.これを解読するのは諦め,新たにslappasswdで設定したい平文パスワードをうち,SSHA形式の不可逆暗号化された文字列を得る.これをbase64エンコードし,config.ldifのolcRootPWのところに上書きする.

このいじったconfig.ldifや一般アカウントのldifを上記のやり方でslapaddで新たにslap.dを作り直す.この際,slapdは停止させておく.slapdを起動させると,管理者のパスワードは新しく設定したものになっているのが,例えばユーザーのアカウントパスワードを管理者で変更することで,確認できた.

ldappasswd -x -D "cn=root,dc=gentoo,dc=org"  -S -w 新たに設定した平文パスワード  "uid=bionic,ou=People,dc=gentoo,dc=org"
New password: 
Re-enter new password: 

 

追記2024/03/08

LDAPサーバーの計算機のOSをrhel7.9->rhel8.9へインプレースアップグレードした。

インプレースアップグレードは、rhelのマニュアルどおりで問題ない。アップグレード後のリブートは15分ほど時間がかかった。

openldap-serverは、デフォルトのリポジトリから外れている。含まれているリポジトリはインプレースアップグレードで対応できない。アップグレード後、以下のリポジトリを追加する。

subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms

以下のパッケージをインストール。

yum install openldap-devel openldap-servers

以下で問題なくサーバーが動いているよう。

systemctl restart slapd

systemctl status slapd

slapcat

ldapsearch -x