这里介绍一种openldap直接yum安装的方法:z

首先还是强调一点:版本之间的兼容性很重要,yum安装openldap还好些,
但是后面的phpldapadmin版本同样也很重要,版本不同的就算登录进去也管理不了

环境:CentOS 5.4
      httpd-2.2.15.tar.gz
      php-5.2.13.tar.gz
      phpldapadmin-1.2.0.5.tgz
      ssl.ca-0.1.tar.gz

1、yum安装openldap、db4
yum install openldap*
yum install db4*

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
启动ldap: service ldap start

2、安装http
tar zxvf httpd-2.2.15.tar.gz
cd httpd-2.2.15
./configure --prefix=/usr/local/apache \
--with-included-apr \
--with-mpm=worker \
--with-ldap \
--enable-mods-static="deflate expires" \
--enable-mods-shared="ssl ldap authnz-ldap dav dav-fs dav-lock headers rewrite"

make && make install

开web账户
groupadd www
useradd -g www www -d /home/www -s /sbin/nologin

修改httpd.conf配置文件

cd /usr/local/apache/conf
vi httpd.conf

把用户改称www

 

3、生成证书
tar -zxvf ssl.ca-0.1.tar.gz
mv ./ssl.ca-0.1 /usr/local/apache/conf/
cd /usr/local/apache/conf/ssl.ca-0.1
./new-root-ca.sh

下边输入密码其他的随便写生成了ca.key和ca.crt两个文件

下面还要为我们的服务器生成一个证书
./new-server-cert.sh server

这样就生成了server.csr和server.key这两个文件.

签署一下

./sign-server-cert.sh server

输入你之前设置的密码

然后y   就生成了server.crt

mv ./server.* ../ 把证书拷贝到conf的目录下
cd ..  vi httpd.conf

去掉#Include conf/extra/httpd-ssl.conf的注释

如果证书放到其它地方去要修改httpd-ssl.conf的配置


重起apache服务
/usr/local/apache/bin/apachectl -k restart
防火墙放行443端口
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
重启防火墙
service iptables restart
在浏览网页 https://192.168.6.7


4、生成slapd密码

slappasswd

New password: 输入 123456
Re-enter new password: 再输入 123456

生成一个随机的加密密码: {SSHA}YAz5BrA9hdWVv7HM2Yhd2C2erVVI/VVc
备注:相同的数字随机加密后会不同


5、修改openldap的配置文件

vi /etc/openldap/slapd.conf

改动三行

suffix "dc=holy,dc=com"
rootdn "cn=admin,dc=holy,dc=com"

rootpw {SSHA}YAz5BrA9hdWVv7HM2Yhd2C2erVVI/VVc

 

 

修改migrate_common.ph 指定正确ldap suffix信息

cd /usr/share/openldap/migration/

vi migrate_common.ph

修改为
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "holy.com";

# Default base
$DEFAULT_BASE = "dc=holy,dc=com";



开始生成ldap 初始化信息

./migrate_base.pl > /tmp/base.ldif

把etc/passwd /etcgroup的数据导入ldap

tail -n 100 /etc/passwd > /tmp/passwd.ldif

tail -n 100 /etc/group > /tmp/group.ldif

备注初始化信息可以通过这部分颜色的方法生成但是我们为了知道它里面写了什么还是用了自动编写的信息文件:如下的init.ldif、user.ldif

启动ldap服务
service ldap restart


[root@puppet openldap]# ps -ef|grep slapd
ldap     32357     1  0 16:29 ?        00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
root     32364  3278  0 16:30 pts/0    00:00:00 grep slapd


设置初始化
vi  /tmp/init.ldif

dn: dc=holy,dc=com
objectClass: dcObject
objectClass: organization
dc: holy
o: holy Company


dn: cn=admin,dc=holy,dc=com
objectClass: organizationalRole
cn: admin

dn: ou=people,dc=holy,dc=com
objectClass: organizationalUnit
ou: people

账户密码信息
vi /tmp/user.ldif

dn:cn=user1,ou=People,dc=holy,dc=com
cn: user1
sn: USER1
uid: user1
userPassword: 111111
objectClass: inetOrgPerson

dn:cn=user2,ou=People,dc=holy,dc=com
cn: user2
sn: USER2
uid: user2
userPassword: 111111
objectClass: inetOrgPerson


dn:cn=user3,ou=People,dc=holy,dc=com
cn: user3
sn: USER3
uid: user3
userPassword: 111111
objectClass: inetOrgPerson

 这几个用户的密码可以通过后面的phpldapadmi进行修改

6、安装php和ldapphpadmin 管理工具

tar zxvf php-5.2.13.tar.gz
cd php-5.2.13
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-gd \
--enable-gd-native-ttf \
--with-png-dir \
--with-jpeg-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2  \
--enable-mbstring \
--with-libxml-dir \
--enable-sockets \
--without-sqlite \
--without-pdo-sqlite \
--disable-ipv6  \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-ldap --with-gettext

make && make install
修改apache 配置文件

vi /usr/local/apache/conf/httpd.conf
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php

cp php.ini-dist /etc/php.ini

安装phpldapadmin
cd /qeedoodb/setup/
tar zxvf phpldapadmin-1.2.0.5.tgz
cd phpldapadmin-1.2.1/config
cp config.php.example config.php
cd /qeedoodb/setup/
mv phpldapadmin-1.2.0.5 /usr/local/apache/htdocs/phpldapadmin

重起apache

https://ip/phpldapadmin

就可以登陆管理界面了

 

7、apache用ldap做验证
<Directory /usr/local/apache/htdocs/test>

AuthType basic
AuthName "private area"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://192.168.6.7:389/dc=holy,dc=com?uid?sub?(objectClass=*)
require ldap-user "user1"  #只指定一个用户登录
#require valid-user        #全部的用户登录都有效
</Directory>


mkdir /usr/local/apache/htdocs/test
vi index.php
ok

输入https://192.168.6.7/phpldapadmin   弹出窗口会提示你输入LDAP验证 账户和密码都是上面设置的user1