Centos6系统中LDAP配置
服务器:
安装
yum install openldap openldap-servers openldap-clients
安装后,把模板文件拷贝到配置文件目录并改名
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
执行slappasswd命令,生成密码(此处输入的为123)
slappasswd
New password:
Re-enter new password:
{SSHA}ChrYrSofelqU6wrzpPmj/qOWzyh2inDx
编辑配置文件/etc/openldap/slapd.conf
......
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/core.schema //include 中包含所需的SCHEMA
......
suffix "dc=highgo,dc=com"
rootdn "cn=Manager,dc=highgo,dc=com"
rootpw {SSHA}ChrYrSofelqU6wrzpPmj/qOWzyh2inDx //填写slappasswd生成的密码
拷贝数据文件:
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
测试配置文件并生成配置数据slapd.d(slapd.d是真正读取配置的地方,当修改了配置文件时,需要重新生成slapd.d)
root权限执行slaptest:
slapd
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
修改修改配置文件和数据目录的权限:(数据目录/var/lib/ldap/在配置文件slapd.conf的directory处)
chown –R ldap /etc/openldap/*
chown –R ldap /var/lib/ldap/*
启动服务
service slapd start
建立root.ldif文件,用以添加rootdn
dn:dc= highgo,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: highgo
dn:cn=Manager,dc= highgo,dc=com
objectclass:organizationalRole
添加rootdn:
ldapadd -x -D "cn=Manager,dc= highgo,dc=com" -w 123 -f root.dif
确认rootd已经添加:
ldapsearch -x -D "cn=Manager,dc= highgo,dc=com" -w 123 -b "dc= highgo,dc=com"
结果:
# highgo.com
dn: dc=highgo,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: highgo
dc: highgo
# Manager, highgo.com
dn: cn=Manager,dc=highgo,dc=com
objectClass: organizationalRole
cn: Manager
TSL连接配置:
生成ssl数字证书并签名。
若有签名的ssl证书,则只需要把证书拷贝到相应目录下,并在配置文件中写明路径即可。
若没有,可以使用以下步骤生成自签名的证书:
cd /etc/pki/CA
(1)生成根秘钥:
openssl genrsa -out private/cakey.pem 2048
(2)生成自签名的根证书:
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
(3)初始化CA:
mkdir private newcerts
# touch newcerts index.txt serial
# echo "00" > serial
(4)创建cacerts文件夹
cd /etc/openldap/
mkdir cacerts
(5)生成ldap服务器的秘钥和证书
cd /etc/openldap/cacerts
生成服务器的私钥
openssl genrsa -out server.key
为ldap生成证书签署请求(所填内容与根证书相同)
openssl req -new -key server.key -out server.csr
ca根据请求签发证书,得到.crt证书文件
openssl ca -in server.csr -out server.crt
拷贝证书到ldap配置目录 并设置权限
cp /etc/pki/CA/cacert.pem /etc/openldap/cacerts
chown -R ldap /etc/openldap/cacerts/server.crt
chmod 644 /etc/openldap/cacerts/server.crt
chown -R ldap /etc/openldap/cacerts/server.key
chmod 400 /etc/openldap/cacerts/server.key
chown -R ldap /etc/openldap/cacerts/cacert.pem
chmod 644 /etc/openldap/cacerts/cacert.pem
配置/etc/openldap/slapd.conf
在 OpenLDAP 服务器上,将以下内容添加到 /etc/openldap/slapd.conf 文件的 global
段下面。TLSCertificateFile 和 TLSCertificateKeyFile 指定了证书文件和私钥文件的路径
TLSCACertificatePath /etc/openldap/cacerts/cacert.pem
TLSCertificateFile /etc/openldap/cacerts/server.crt
TLSCertificateKeyFile /etc/openldap/cacerts/server.key
编辑/etc/sysconfig/ldap,开启加密支持
vim /etc/sysconfig/ldap
SLAPD_LDAPS=yes
重新生成slapd.d目录
rm -rf slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap /etc/openldap/slapd.d
重启LDAP服务
service slapd restart
通过命令netstat -ntulp |grep slapd可以看到389(普通连接)端口和636(加密端口都已经启动)
netstat -ntulp |grep slapd
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 4550/slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 4550/slapd
tcp 0 0 :::636 :::* LISTEN 4550/slapd
tcp 0 0 :::389 :::* LISTEN 4550/slapd
关闭防火墙
iptables -F
iptables -X
可能出现的问题:
ldap_bind: Invalid credentials (49) 提示密码不正确
解决方案:
参考 http://www.linuxfly.org/post/671/
清空slapd.d:
rm -rf /etc/openldap/slapd.d/*
重新生成slapd.d
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
修改权限
chown -R ldap.ldap slapd.d/
重新拷贝 DB_CONFIG
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
重启
service slapd restart
客户端:
安装
yum install -y openldap-clients
编辑配置文件 /etc/openldap/ldap.conf 以支持TSL传输
加入以下内容:
TLS_REQCERT never
ssl start_tls
tls_checkpeer yes
#TLS_CACERTDIR /etc/openldap/cacerts
#tls_cacertfile /etc/openldap/cacerts/cacert.pem
Centos7系统中的LDAP配置
服务器
安装
yum install openldap openldap-servers openldap-clients
执行slappasswd命令,生成密码(此处输入的为123)
slappasswd
New password:
Re-enter new password:
{SSHA}ChrYrSofelqU6wrzpPmj/qOWzyh2inDx
centos7系统中LDAP没有配置文件slapd.conf,所以需要以下的设置:
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
修改如下内容:
olcSuffix: dc=highgo,dc=com
olcRootDN: cn=Manager,dc=highgo,dc=com
olcRootPW: {SSHA}ChrYrSofelqU6wrzpPmj/qOWzyh2inDx
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
修改olcAccess的dn.base 内容与上面的rootdn一样
olcAccess: {0}to * by dn.base="cn=Manager,dc=highgo,dc=com" read by * none
vim /etc/openldap/slapd.d/cn\=config.ldif
添加如下内容:
olcAllows: bind_v2
拷贝数据文件 并 权限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap.ldap /var/lib/ldap
测试配置文件:
slaptest -u
56e7c83d ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
56e7c83d ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
启动
service slapd start
导入要使用的SCHEMA
cd /etc/openldap/schema/
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif//一般默认有
建立root.ldif文件并添加rootdn(与Centos6相同)
vim root.ldif
添加如下内容
dn:dc= highgo,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: highgo
dn:cn=Manager,dc= highgo,dc=com
objectclass:organizationalRole
ldapadd -x -D "cn=Manager,dc= highgo,dc=com" -w 123 -f root.dif
TSL连接配置
生成ssl数字证书并签名。
若有签名的ssl证书,则只需要把证书拷贝到相应目录下,并在配置文件中写明路径即可。
若没有,可以使用以下步骤生成自签名的证书:(与Centos6相同)
cd /etc/pki/CA
(1)生成根秘钥:
openssl genrsa -out private/cakey.pem 2048
(2)生成自签名的根证书:
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
(3)初始化CA:
mkdir private newcerts
# touch newcerts index.txt serial
# echo "00" > serial
(4)创建cacerts文件夹
cd /etc/openldap/
mkdir cacerts
(5)生成ldap服务器的秘钥和证书
cd /etc/openldap/cacerts
生成服务器的私钥
openssl genrsa -out server.key
为ldap生成证书签署请求(所填内容与根证书相同)
openssl req -new -key server.key -out server.csr
ca根据请求签发证书,得到.crt证书文件
openssl ca -in server.csr -out server.crt
配置证书路径
vim /etc/openldap/slapd.d/cn=config.ldif
olcTLSCACertificatePath: /etc/openldap/cacerts/cacert.pem
olcTLSCertificateFile: /etc/openldap/cacerts/server.crt
olcTLSCertificateKeyFile: /etc/openldap/cacerts/server.key
开启系统加密支持
vim /etc/sysconfig/slapd
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
测试配置文件(同centos6)
slaptest -u
56e7c83d ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
56e7c83d ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
重启
service slapd restart
关闭防火墙
iptables -F
iptables -X
客户端
配置与centos相同
安装
yum install -y openldap-clients
编辑配置文件 /etc/openldap/ldap.conf 以支持TSL传输
加入以下内容:
TLS_REQCERT never
ssl start_tls
tls_checkpeer yes
#TLS_CACERTDIR /etc/openldap/cacerts
#tls_cacertfile /etc/openldap/cacerts/cacert.pem
补充:
-H指定url和端口:
ldapsearch -D "cn=Manager,dc=example,dc=com" -w 123 -b "dc=example,dc=com" -H ldaps://192.168.10.35:636
ldapsearch -D "cn=Manager,dc=example,dc=com" -w 123 -b "dc=example,dc=com" -H ldap://192.168.10.35:389
TSL加密连接:url前缀为ldaps,端口为636
普通连接:url前缀为ldap,端口为389
-h -p指定url和端口
ldapsearch -x -D "cn=Manager,dc=example,dc=com" -w 123 -h 192.168.10.35 -p 389
ldapsearch -x -D "cn=Manager,dc=example,dc=com" -w 123 -h 192.168.10.35 -p 636 不好用
ldapsearch -x -D "cn=Manager,dc=example,dc=com" -w 123 -h ldaps://192.168.10.35 -p 636 OK
-h直接指定ip只能用普通连接,TSL无法连接(默认前缀为ldap)
TSL连接时,需要在-h指定前缀ldaps
slapd -h "ldap://:666 ldaps://:777" 可以指定启动端口