Openldap2.5.13编译安装
本篇文章没有很全面,采用的是编译安装,yum安装参考我的另外一篇文章
一、准备
-
openssl-1.1.1.tar.gz 下载地址:https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
-
openldap-2.5.13.tgz 下载地址:https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.5.13.tgz
-
更换yum源
# "备份原来的源" mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # "下载、替换为阿里云源配置" wget /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # "更新yum缓存" yum clean all yum makecache
-
创建要放置安装的文件夹(这里根据实际情况定义)
mkdir /oakxian #项目的总安装路径 mkdir /oakxian/soft #安装包所在位置 mkdir /oakxian/server #项目软件安装位置 mkdir /oakxian/log #项目日志位置
-
关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@localhost ~]# setenforce 0
二、编译并配置openssl-1.1.1
1、openldap需要用到openssl 1.1.1或以上版本,但是centos7截止到2021年07月14日官方yum源中没有并没有openssl 1.1.1以上的版本。所以使用源码进行编译
2、查看当前环境openssl版本,不满足条件,则先进行openssl-1.1.1安装
[root@localhost ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
3、编译oepnssl需要用到gcc,使用yum安装gcc
yum install gcc
4、检查服务器是否安装zlib
whereis zlib
如果服务器已经安装则会输出路径 ,没有安装的需要执行下载安装命令
yum install zlib-devel
再次检查服务器中zlib,显示已经存在
[root@localhost ~]# whereis zlib
zlib: /usr/include/zlib.h /usr/share/man/man3/zlib.3.gz
5、将下载的openssl安装包放置/oakxian/soft目录下并解压
openssl-1.1.1.tar.gz 下载地址:https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
tar -zxf openssl-1.1.1.tar.gz
6、编译openssl-1.1.1并将其安装到/oakxian/server/openssl目录下
cd /oakxian/soft/openssl-1.1.1 #进入解压后的目录下
#执行配置文件,并设置安装位置为/oakxian/server/openssl
./config shared zlib --prefix=/oakxian/server/openssl
make && make install #编译安装
--prefix
是指定安装目录的,shared zlib
库是在安装时寻找zlib库依赖的
7、安装完成后构建依赖
cd /oakxian/soft/openssl-1.1.1
./config -t
make depend
8、在编译时使用的动态链接库文件中,加入openssl路径
vim /etc/ld.so.conf文件,在文件末尾加上 /oakxian/server/openssl/lib
(填写实际位置)
执行配置生效命令
ldconfig
9、添加openssl到环境变量
vim /etc/profile 文件 ,添加如下内容到末尾
export OPENSSL=/oakxian/server/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin
执行:
source /etc/profile
10、正常安装完成后,查看openssl版本
[root@localhost server]# openssl version
OpenSSL 1.1.1 11 Sep 2018
注:执行openssl version可能会报如下错误
/usr/local/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
解决办法:
#位置根据实际情况填写,默认位置为:/usr/local/openssl/lib/libssl.so.1.1 sudo ln -s /oakxian/server/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 sudo ln -s /oakxian/server/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
三、Cyrus SASL安装
这个是编译安装必须要的依赖包,如果选择yum源安装,则不需要(yum安装自带了)
#安装SASL机制依赖包
yum -y install cyrus-sasl-*
四、编译安装openldap-2.5.13
1、下载所需依赖
yum -y install unixODBC-devel.x86_64
yum install -y libtool-ltdl libtool-ltdl-devel tcp_wrappers tcp_wrappers-devel
yum -y install gcc #gcc也需要,上面已安装过
2、下载openldap包到/oakxian/soft
目录下,并编译安装到/oakxian/server/openldap
目录下
cd /oakxian/soft #到压缩包所在位置
tar -zxf openldap-2.5.13.tgz #解压
cd /oakxian/soft/openldap-2.5.13 #进入解压后目录
执行configure配置:
注意,编译时需要用到上文中已经编译好的openssl相关头文件以及库
./configure CPPFLAGS="-I/usr/local/include -I/oakxian/server/openssl/include" \
LDFLAGS="-L/usr/local/lib -L/oakxian/server/openssl/lib" \
--datadir=/oakxian/server/openldap/data \
--enable-ldap --enable-cleartext --enable-sql --enable-spasswd \
--enable-dynamic --enable-syslog --with-cyrus-sasl --enable-ppolicy \
--enable-crypt --enable-modules --enable-wrappers \
--enable-overlays --enable-accesslog --enable-debug \
--prefix=/oakxian/server/openldap/ --with-tls=openssl
说明:–enable-overlays会安装所有模块到slapd中,会带有memberof属性,不需要单独添加memberof模块,需要配置文件中添加:overlay memberof,来开启
注意,需要configure都校验通过后再进行编译安装,即上述操作没有报错,提示如下图:
执行:
make depend
make前需要修改一下编译模式 #解决"for.c:3:2: 附注:使用 -std=c99 或 -std=gnu99 来编译您的代码"报错
cd /oakxian/soft/openldap-2.5.13 vim servers/slapd/back-sql/add.c
修改如下图所示,将i变量提出到for循环外
执行:
make
make test #时间较久
make install
编译好后openldap就安装到了指定目录/oakxian/server/openldap目录下
3、配置环境变量
vim /etc/profile,添加如下内容
LDAP_HOME=/oakxian/server/openldap
PATH=$PATH:$LDAP_HOME/bin:$LDAP_HOME/sbin:$LDAP_HOME/libexec
export PATH
source /etc/profile
五、配置openldap
1、设置超级密码rootpw
[root@localhost ~]# slappasswd -s 123456
{SSHA}3hz85TJMt4n8QOdEDXI7MbfEcCbS9UJM
#创建directory目录,需要根据slapd.conf文件中directory的值创建
mkdir /oakxian/server/openldap/var/openldap-data
#先启动slapd
[root@localhost openldap]# slapd -d 256 -h "ldap:/// ldapi:///"
#重启一个shell页面,执行以下命令:
#创建slapd.d目录
mkdir /oakxian/server/openldap/etc/openldap/slapd.d
#生成对应slapd.d下相关配置文件
slaptest -f /oakxian/server/openldap/etc/openldap/slapd.conf -F /oakxian/server/openldap/etc/openldap/slapd.d
#修改权限
vim /oakxian/server/openldap/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
#----将默认olcAccess: {0}to * by * none修改为如下内容:
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
#重启slapd,在第一个启动的等待命令界面,ctrl+c停止slapd,再执行启动命令
[root@localhost openldap]# slapd -d 256 -h "ldap:/// ldapi:///"
/这一步也不执行
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
2、导入schema
文件都在/oakxian/server/openldap/etc/openldap/schema
目录下
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dsee.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/namedobject.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/msuser.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dyngroup.ldif
注意:如果报错:additional info: olcAttributeTypes: Duplicate attributeType
则证明已经包含对应的schema,上述schema,后两个msuser和dyngroup我在导入时显示重复
3、创建根域,与超级管理员
[root@localhost ~]# slappasswd -s 123456
{SSHA}l+9FKL3GIYmQH1QMwVHm5ytWaxu3wIhZ
vim domain-dbadmin.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by dn.base="cn=directory manager,dc=cbpm,dc=com" read
by * none
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=cbpm,dc=com
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=directory manager,dc=cbpm,dc=com
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}l+9FKL3GIYmQH1QMwVHm5ytWaxu3wIhZ
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=directory manager,dc=cbpm,dc=com" write
by anonymous auth
by self write
by * none
olcAccess: {1}to dn.base=""
by * read
olcAccess: {2}to *
by dn="cn=directory manager,dc=cbpm,dc=com" write
by * read
ldapmodify -Y EXTERNAL -H ldapi:/// -f domain-dbadmin.ldif