在本章實驗以前須要提早搭建好,用戶基於證書認證的open***而且可以正常連接,我是按照我以前發的第一篇關於open***的帖子作的。php
1)提早準備 :用戶基於證書訪問open***html
2)安裝 ldap ,ldap web 並建立用戶,可以在經過 ldap 找到建立的用戶web
3)配置 open*** 基於openldap 驗證數據庫
環境介紹apache
cat /etc/redhat-releasevim
uname -r瀏覽器
須要有如下組件,缺一不可緩存
yum grouplist #查看安裝了那些包組bash
Base服務器
Compatibility libraries
Debugging Tools
Development tools
Dial-up Networking Support
Hardware monitoring utilities
Performance Tools
時間同步並添加定時任務(這一步在以前搭建open***基於證書認證時已經建立了)
修改 /etc/hosts 文件,指定本機地址和將要設定的域名。修改後經過 ping 命令進行測試
echo 「192.168.6.28 yuci.com」 >> /etc/hosts
ping yuci.com
安裝各類依賴包
yum -y install openldap openldap-*
yum -y install nscd nss-pam-ldapd pcre pcre-*
yum -y update nss-softokn-freebl
yum -y install nss-*
複製並備份 ldap 的配置文件 slapd.conf
cd /etc/openldap/
cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
slappasswd -s 123456 | sed -e "s#{SSHA}#rootpw\t{SSHA}#g" >> slapd.conf
tail -1 slapd.conf
cp slapd.conf slapd.conf.bak
編輯 slapd.conf 文件,註釋 114-117 行,注意不要有空格
vim slapd.conf
database bdb
suffix "dc=yuci,dc=com"
rootdn "cn=damin,dc=yuci,dc=com"
文件最後添加如下選項
loglevel 296 #日誌級別
cachesize 1000 # ldap 緩存的記錄數
checkpoint 2048 10 #把內存中的數據寫回數據文件,每2048kb或者10分鐘執行一次
刪除配置文件中的默認權限,並添加如下新的權限
access to *
by self write
by anonymous auth
by * read
編輯日誌log,作好備份
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
echo '#record ldap.log by yuci 2017-01-06' >> /etc/rsyslog.conf
echo 'local4.* /var/log/ldap.log' >> /etc/rsyslog.conf
tail -1 /etc/rsyslog.conf
/etc/init.d/rsyslog restart
LDAP數據庫格式爲bdb,存儲路徑爲/var/lib.ldap
grep directory slapd.conf
從模板中拷貝數據庫的配置文件,而且受權修改權限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
ll /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
chmod 700 /var/lib/ldap/
測試文件配置成功
slaptest -u
啓動 openldap 服務
/etc/init.d/slapd start
查看端口
lsof -i :389
檢查進程
ps -ef | grep ldap | grep -v grep
添加開機自啓動,並查看
chkconfig slapd on
chkconfig --list slapd
查看啓動日誌,若是日誌爲空,說明沒有配好
cat /var/log/ldap.log
查看 ldap 數據庫中的用戶
經過如下命令查詢 ldap 數據庫,報錯以下
ldapsearch -LLL -W -x -H ldap://yuci.com -D "cn=admin,dc=yuci,dc=com" -b "dc=yuci,dc=com" "(uid=*)"
解決報錯
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d/
/etc/init.d/slapd restart
lsof -i :389
再次嘗試鏈接數據庫,仍是出現如下報錯,沒有項目,能夠進行下一步了
ldapsearch -LLL -W -x -H ldap://yuci.com -D "cn=admin,dc=yuci,dc=com" -b "dc=yuci,dc=com" "(uid=*)"
爲 ldap master 配置 web 管理接口
安裝依賴的軟件服務,並檢查
yum -y install httpd php php-ldap php-gd -y
rpm -qa httpd php php-ldap php-gd
下載地址:3.7版本
https://www.ldap-account-manager.org/lamcms/
切換目錄,將剛纔下載的文件上傳到此目錄。解壓,重命名這個軟件
cd /var/www/html/
tar zxf ldap-account-manager-3.7.tar.gz
mv ldap-account-manager-3.7/ ldap
備份,重命名,並修改文件內容
cd ldap/config
cp config.cfg_sample config.cfg_sample.bak
cp lam.conf_sample lam.conf_sample.bak
mv config.cfg_sample config.cfg
mv lam.conf_sample lam.conf
sed -i 's#cn=Manager#cn=admin#g' lam.conf
sed -i 's#dc=my-domain#dc=yuci#g' lam.conf
sed -i 's#dc=com#dc=com#g' lam.conf #由於個人域名是 yuci.com 因此並不須要這項
chown -R apache:apache /var/www/html/ldap
重啓 httpd 服務
/etc/init.d/httpd start
經過瀏覽器訪問 192.168.6.29/ldap , 能夠正常訪問,準備配置
添加一個用戶,一個組
服務器端查看數據,找到剛纔建立的 yuciuser01 用戶
ldapsearch -LLL -W -x -H ldap://yuci.com -D "cn=admin,dc=yuci,dc=com" -b "dc=yuci,dc=com" "(uid=*)"
開始配置 open***基於openldap 的驗證。
要保證用戶能夠經過證書連接 open***,openldap 中有用戶
更改yum源並yum安裝 open***-auth-ldap。須要經過這個插件來進行open***與openldap之間的連接。
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's@#b@b@g' /etc/yum.repos.d/epel.repo
sed -i 's@mirrorlist@#mirrorlist@g' /etc/yum.repos.d/epel.repo
yum -y install open***-auth-ldap
備份並修改 open***-auth-ldap 的配置文件
cp /etc/open***/auth/ldap.conf /etc/open***/auth/ldap.conf.bak
vim /etc/open***/auth/ldap.conf
[root@open*** ~]# diff /etc/open***/auth/ldap.conf.bak /etc/open***/auth/ldap.conf 3c3 < URL ldap://ldap1.example.org --- > URL ldap://192.168.6.28:389 6c6 < # BindDN uid=Manager,ou=People,dc=example,dc=com --- > BindDN cn=admin,dc=yuci,dc=com 9c9 < # Password SecretPassword --- > Password 123456 15c15 < TLSEnable yes --- > TLSEnable no 18c18 < FollowReferrals yes --- > FollowReferrals no 38c38 < BaseDN "ou=People,dc=example,dc=com" --- > BaseDN "dc=yuci,dc=com" 41c41 < SearchFilter "(&(uid=%u)(accountStatus=active))" --- > SearchFilter "(uid=%u)"
cp /usr/share/doc/open***-auth-ldap-2.0.3/auth-ldap.conf /usr/share/doc/open***-auth-ldap-2.0.3/auth-ldap.conf.bak
vim /usr/share/doc/open***-auth-ldap-2.0.3/auth-ldap.conf
[root@open*** ~]# diff /usr/share/doc/open***-auth-ldap-2.0.3/auth-ldap.conf.bak /usr/share/doc/open***-auth-ldap-2.0.3/auth-ldap.conf 3c3 < URL ldap://ldap1.example.org --- > URL ldap://192.168.6.28:389 6c6 < # BindDN uid=Manager,ou=People,dc=example,dc=com --- > BindDN cn=admin,dc=yuci,dc=com 9c9 < # Password SecretPassword --- > Password 123456 15c15 < TLSEnable yes --- > TLSEnable no 18c18 < FollowReferrals yes --- > FollowReferrals no 21c21 < TLSCACertFile /usr/local/etc/ssl/ca.pem --- > # TLSCACertFile /usr/local/etc/ssl/ca.pem 24c24 < TLSCACertDir /etc/ssl/certs --- > # TLSCACertDir /etc/ssl/certs 28,29c28,29 < TLSCertFile /usr/local/etc/ssl/client-cert.pem < TLSKeyFile /usr/local/etc/ssl/client-key.pem --- > # TLSCertFile /usr/local/etc/ssl/client-cert.pem > # TLSKeyFile /usr/local/etc/ssl/client-key.pem 38c38 < BaseDN "ou=People,dc=example,dc=com" --- > BaseDN "dc=yuci,dc=com" 41c41 < SearchFilter "(&(uid=%u)(accountStatus=active))" --- > SearchFilter "(uid=%u)" 50,52c50,52 < BaseDN "ou=Groups,dc=example,dc=com" < SearchFilter "(|(cn=developers)(cn=artists))" < MemberAttribute uniqueMember --- > BaseDN "ou=Group,dc=yuci,dc=com" > SearchFilter "(|(cn=*)(cn=artists))" > #MemberAttribute uniqueMember
修改 open*** 的配置文件 server.conf,添加以下內容
plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so "/etc/open***/auth/ldap.conf cn=%u"
client-cert-not-required
username-as-common-name
修改後 server.conf 文件內容以下
port 1194 proto tcp dev tun ca /etc/open***/keys/ca.crt cert /etc/open***/keys/server.crt key /etc/open***/keys/server.key # This file should be kept secret dh /etc/open***/keys/dh1024.pem log /var/log/open***.log server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status open***-status.log verb 3 plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so "/etc/open***/auth/ldap.conf cn=%u" client-cert-not-required username-as-common-name
還須要更改客戶端的配置文件 user1.o*** 文件,添加以下內容
auth-user-pass
client dev tun proto tcp remote 192.168.6.45 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt ;cert user1.crt ;key user1.key ns-cert-type server auth-user-pass comp-lzo verb 3
到此位置配置完成,經過 user1用戶能夠驗證連接 open*** ,在 openldap web 上建立的用戶均可以經過驗證並連接。