OpenLDAP 2.7.1[1] 을 RHEL 9 계열 서버에 소스 빌드로 설치하고, slapd.conf 로 설정해 LDAPS 까지 여는 절차다. 공식 빠른 시작[2]과 설치 문서[3]의 순서를 따르되 경로는 /usr/local/openldap, 설정은 /etc/openldap 으로 둔다. LTS 계열(2.6.15)을 쓰려면 버전 문자열만 바꾸면 된다.
설정 방식은 slapd.conf 를 쓴다. 공식 문서는 cn=config 를 권하지만[4] 단일 노드에서는 텍스트 파일이 읽고 고치기 쉽다. 나중에 cn=config 로 바꾸려면 slaptest -f slapd.conf -F /etc/openldap/slapd.d 로 변환한다.
ldap.example.com, suffix dc=example,dc=com, 관리자 cn=root,dc=example,dc=com.dnf groupinstall -y "Development Tools"
dnf install -y openssl-devel cyrus-sasl-devel libtool-ltdl-devel libevent-devel krb5-devel systemd-devel wget
libtool-ltdl-devel 이 기본 저장소에 없으면 CRB(CodeReady Builder) 저장소를 켠다.
dnf config-manager --set-enabled crb
groupadd --system ldap
useradd --system --no-create-home --shell /sbin/nologin --gid ldap ldap
mkdir -p /var/lib/openldap /var/run/openldap /etc/openldap/certs
chown -R ldap:ldap /var/lib/openldap /var/run/openldap
cd /usr/local/src
wget https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.7.1.tgz
sha256sum openldap-2.7.1.tgz
# 다운로드 페이지의 체크섬과 대조한다
tar xzf openldap-2.7.1.tgz
cd openldap-2.7.1
./configure --prefix=/usr/local/openldap --sysconfdir=/etc/openldap \
--enable-slapd --enable-modules --enable-dynamic --enable-overlays \
--with-tls=openssl --with-cyrus-sasl --enable-crypt --enable-spasswd
make depend
make
make test # 시간이 오래 걸린다. 실패하면 configure 부터 다시 본다
make install
cat > /etc/profile.d/openldap.sh <<'EOF'
export OPENLDAP_HOME=/usr/local/openldap
export PATH=$OPENLDAP_HOME/bin:$OPENLDAP_HOME/sbin:$PATH
export LD_LIBRARY_PATH=$OPENLDAP_HOME/lib:$LD_LIBRARY_PATH
EOF
source /etc/profile.d/openldap.sh
echo /usr/local/openldap/lib > /etc/ld.so.conf.d/openldap.conf && ldconfig
slapd -V
# @(#) $OpenLDAP: slapd 2.7.1 ...
ldapsearch -VV
스키마 파일은 make install 이 /etc/openldap/schema/ 에 넣는다.
cp /etc/pki/tls/certs/ldap.example.com.crt /etc/openldap/certs/cert.pem
cp /etc/pki/tls/private/ldap.example.com.key /etc/openldap/certs/key.pem
cp /etc/pki/tls/certs/ca.crt /etc/openldap/certs/ca.pem
chown -R ldap:ldap /etc/openldap/certs
chmod 600 /etc/openldap/certs/key.pem
slappasswd
# New password:
# Re-enter new password:
# {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <- 아래 rootpw 에 넣는다
slapd.conf(5)[4:1] 의 mdb 예제를 바탕으로 한다.
### 스키마
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
### TLS
TLSCertificateFile /etc/openldap/certs/cert.pem
TLSCertificateKeyFile /etc/openldap/certs/key.pem
TLSCACertificateFile /etc/openldap/certs/ca.pem
TLSProtocolMin 3.3
### 모듈
modulepath /usr/local/openldap/libexec/openldap
moduleload back_mdb.la
moduleload memberof.la
### 로그
loglevel stats
### 데이터베이스
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=root,dc=example,dc=com"
rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
directory /var/lib/openldap
index objectClass eq
index cn,sn,uid eq,pres,sub
index mail eq,pres,sub
index memberOf eq
overlay memberof
### 접근 제어 — 순서대로 첫 일치가 적용된다
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to *
by self write
by users read
by * none
TLSProtocolMin 3.3 은 TLS 1.2 이상만 받는다는 뜻이다.by anonymous auth 가 있어야 사용자가 자기 비밀번호로 bind 할 수 있다.by * read 로 바꾼다.slaptest -u -f /etc/openldap/slapd.conf
# config file testing succeeded
cat > /etc/systemd/system/slapd.service <<'EOF'
[Unit]
Description=OpenLDAP Server Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/openldap/slapd.pid
Environment="LD_LIBRARY_PATH=/usr/local/openldap/lib"
ExecStartPre=/usr/local/openldap/sbin/slaptest -u -f /etc/openldap/slapd.conf
ExecStart=/usr/local/openldap/libexec/slapd -u ldap -g ldap -f /etc/openldap/slapd.conf -h "ldap:/// ldaps:/// ldapi:///"
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now slapd
systemctl status slapd
firewall-cmd --permanent --add-service=ldap # 389
firewall-cmd --permanent --add-service=ldaps # 636
firewall-cmd --reload
suffix 항목과 사용자 · 그룹 컨테이너를 만든다.
cat > base.ldif <<'EOF'
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
EOF
ldapadd -x -H ldapi:/// -D "cn=root,dc=example,dc=com" -W -f base.ldif
# 서버 응답
ldapsearch -x -H ldap://localhost -b "" -s base "(objectClass=*)" namingContexts
# LDAPS 와 인증서
LDAPTLS_CACERT=/etc/openldap/certs/ca.pem ldapwhoami -x -H ldaps://ldap.example.com -D "cn=root,dc=example,dc=com" -W
# dn:cn=root,dc=example,dc=com
# 트리
ldapsearch -x -H ldap://localhost -D "cn=root,dc=example,dc=com" -W -b "dc=example,dc=com" -LLL dn
클라이언트에서 사설 CA 를 쓰려면 /etc/openldap/ldap.conf 에 TLS_CACERT 를 적어 둔다. 조회 옵션은 ldapsearch 를 본다.
slappasswd # {SSHA}... 를 얻는다
cat > user.ldif <<'EOF'
dn: uid=haedong,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: haedong
cn: Hae Dong
sn: Kang
mail: haedong@example.com
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/haedong
loginShell: /bin/bash
userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dn: cn=admins,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: admins
member: uid=haedong,ou=users,dc=example,dc=com
EOF
ldapadd -x -H ldapi:/// -D "cn=root,dc=example,dc=com" -W -f user.ldif
ldapwhoami -x -H ldap://localhost -D "uid=haedong,ou=users,dc=example,dc=com" -W
memberof 오버레이 덕분에 사용자 항목에 memberOf: cn=admins,... 가 자동으로 붙는다. Keycloak · Hue · Knox 같은 서비스는 이 속성으로 그룹을 읽는다.
최신 버전 2.7.1 (2026-09-08), LTS 2.6.15 — 2026-09-20 확인. https://www.openldap.org/software/download/ · https://www.openldap.org/software/release/changes.html ↩︎
OpenLDAP Admin Guide 2.7 — A Quick-Start Guide. 2026-09-20 확인. https://www.openldap.org/doc/admin27/quickstart.html ↩︎
OpenLDAP Admin Guide 2.7 — Building and Installing OpenLDAP Software. 2026-09-20 확인. https://www.openldap.org/doc/admin27/install.html ↩︎
OpenLDAP Admin Guide 2.7 — The slapd Configuration File. 2026-09-20 확인. https://www.openldap.org/doc/admin27/slapdconfig.html · slapd.conf(5) https://www.openldap.org/software/man.cgi?query=slapd.conf&sektion=5 ↩︎ ↩︎