天天看點

openldap安裝與配置

環境:CentOS 5.4

LDAP的工作原理: 

LDAP是以伺服器/用戶端方式工作,目錄服務将資料庫軟體的邏輯結構分為前端(用戶端)和後端(服務端和倉庫)

用戶端------ 服務端 ------ 倉庫

LDAP 邏輯結構圖

系統自帶以下兩個db檔案必須有,不然編譯openldap-2.3.34還是會報錯

db4-devel-4.3.29-10.el5

db4-4.3.29-10.el5     

1、安裝db:

tar xvf db-5.1.25.tar.gz

cd db-5.1.25

cd build_unix/  

../dist/configure --prefix=/usr/local/BerkeleyDB

make

make install                                   

vi /etc/ld.so.conf

/usr/local/Berkeley/lib

ldconfig

2、安裝openldap

先設定環境不然安裝openldap會報錯

env CPPFLAGS="-I/usr/local/BerkeleyDB/include" LDFLAGS="-L/usr/lib -L/usr/local/BerkeleyDB/lib"

tar xvf openldap-2.3.34.tgz

cd openldap-2.3.34

./configure --prefix=/usr/local/openldap --enable-bdb

make depend

make test 可跳過

make install

3.安裝apache

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

啟動apache

/usr/local/apache/bin/apachectl -k start

若是驗證是否是否apache起來,則防火牆要放行

vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重新開機防火牆

service iptables restart

浏覽 出現 it works 就正确了

生成證書

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.com的配置

重起apache服務

/usr/local/apache/bin/apachectl -k restart

防火牆放行443端口,原先的80端口可以去掉

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

4、生成slapd密碼

/usr/local/openldap/sbin/slappasswd

New password: 輸入密碼

Re-enter new password: 重複密碼

生成後的加密密碼: {SSHA}W/48LCkOe9rZUHMGyjD8VeHbMF4C3Szm

備注:相同的數字随機加密後會不同

5、修改openldap的配置檔案

vi /usr/local/openldap/etc/openldap/slapd.conf

改動三行

suffix "dc=holy,dc=com"

rootdn "cn=root,dc=holy,dc=com"

rootpw {SSHA}W/48LCkOe9rZUHMGyjD8VeHbMF4C3Szm

啟動ldap服務

cd /usr/local/openldap/libexec

./slapd

如果啟動不成功可以用 ./slapd -d 1 啟動debug模式。。将在螢幕列印啟動資訊

但是你重./slapd -d 1 啟動debug模式時候會報錯找不到DB_CONFIG的檔案

cp /usr/local/openldap/var/openldap-data/DB_CONFIG.example /usr/local/openldap/var/openldap-data/DB_CONFIG

[root@localhost libexec]# ps -ef|grep slapd

root     27286     1  0 09:40 ?        00:00:00 ./slapd

root     27289 25603  0 09:40 pts/0    00:00:00 grep slapd

設定初始化

vi  /tmp/init.ldif

dn: dc=holy,dc=com

dc: holy

objectClass: top

objectClass: domain

dn: ou=Hosts,dc=holy,dc=com

ou: Hosts

objectClass: organizationalUnit

dn: ou=People,dc=holy,dc=com

ou: People

賬戶密碼資訊

vi /tmp/user1.ldif

dn:cn=user1,ou=People,dc=holy,dc=com

cn: user1

sn: USER1

uid: user1

userPassword: user1

objectClass: inetOrgPerson

cd /usr/local/openldap/bin

ldapadd -x -D "cn=root,dc=holy,dc=com" -W -f /tmp/init.ldif

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

修改apache 配置檔案

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

DirectoryIndex index.html index.php

AddType application/x-httpd-php .php

cp php.ini-dist /usr/local/php/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

mv phpldapadmin-1.2.0.5 /usr/local/apache/htdocs/phpldapadmin

重起apache

<a href="https://ip/phpldapadmin">https://ip/phpldapadmin</a>

就可以登陸管理界面了

7、apache用ldap做驗證

&lt;Directory /usr/local/apache/htdocs/test&gt;

AuthType basic

AuthName "private area"

AuthBasicProvider ldap

AuthzLDAPAuthoritative off

require ldap-user "user1"  #隻指定一個使用者登入

#require valid-user        #全部的使用者登入都有效

&lt;/Directory&gt;

mkdir /usr/local/apache/htdocs/test

vi index.php

ok

後續問題

用ACL來控制使用者通路LDAP資料庫的權限

access to attrs=userPassword

      by anonymous auth

      by dn="cn=admin,dc=holy,dc=com" write

      by dn="uid=user1,ou=people,dc=holy,dc=com" write

      by self write

access to *

      by * read

碰到的問題:DB版本和ldap有相容性,另外環境也很重要

安裝php遇到的問題如下:

1、configure: error: libjpeg.(a|so) not found.

解決方法:

yum -y install gd

yum -y install gd-devel

2、

httpd: Syntax error on line 62 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

a、關閉SELINUX的方法:

vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重新開機

這個方法可能會對伺服器帶來風險。

b、不關閉SELINUX的方法:

setenforce 0

chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so

setenforce 1

3、

bdb_db_open: Warning - No DB_CONFIG file found in directory /usr/local/openldap/var/openldap-data: (2)

4、不能完成ldap_modify 操作。 

LDAP said: Cannot modify object class 

Error number: 0x45 (LDAP_NO_OBJECT_CLASS_MODS) 

描述: ObjectClass modifications are not allowed. 

5、

始終無法啟動apache,系統管理報錯:

Invalid command ‘AuthLDAPEnabled’, perhaps misspelled or defined by a module not included in the server configuration     .

原來:“Apache2.0版中有關ldap驗證的AuthLDAPEnabled指令取消了“,apache2.2以後的版本也取消了,但是在官方的手冊中居然還能查得到

參考一下下配置:

&lt;Directory /var/www/html&gt;

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Deny from all

AuthName "LDAP auth"

AuthType Basic

#啟用ldap驗證功能

AuthLDAPBindDN "uid=root,dc=holy,dc=com"

Require valid-user

Satisfy any

 本文轉自 holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/576835