# cp -p slapd-cert.pem /etc/openldap/slapdcert.pem # chown ldap:ldap /etc/openldap/slapdcert.pem # chmod 644 /etc/openldap/slapdcert.pem # chown ldap:ldap /etc/openldap/slapdkey.pem # chmod 400 /etc/openldap/slapdkey.pem # mkdir /etc/openldap/cacerts/ # cp /usr/share/ssl/misc/demoCA/cacert.pem /etc/openldap/cacerts/cacert.pem # chown ldap:ldap /etc/openldap/cacerts cacert.pem # chmod 644 /etc/openldap/cacerts cacert.pem
在 OpenLDAP 服务器上,将以下内容添加到 /etc/openldap/slapd.conf 文件的 global 段下面。TLSCertificateFile 和 TLSCertificateKeyFile 指定了证书文件和私钥文件的路径。TLSCipherSuite 指定了一个 OpenSSL 密码的列表,slapd 在与 TLS 协商建立连接时可以从中按照降序顺序依次选择。HIGH 的意思是 “所有密钥的长度都大于 128 位”;MEDIUM 表示 “所有密钥的长度都等于 128 位”;+SSLv2 表示 “不管密钥强度如何,所有密码都是以 SSL 协议版本 2 的形式指定的”。
TLSCipherSuite HIGH:MEDIUM:+SSLv2
TLSCACertificateFile /etc/openldap/cacerts/cacert.pem TLSCertificateFile /etc/openldap/slapdcert.pem
TLSCertificateKeyFile /etc/openldap/slapdkey.pem
将以下内容添加到 LDAP 服务器的第二个配置文件 /etc/openldap/ldap.conf 中:
TLS_CACERTDIR /etc/openldap/cacerts TLS_REQCERT allow
为了允许从 OpenLDAP 客户机上使用安全连接,需要将以下内容添加到 /etc/openldap/ldap.conf 文件中:
ssl start_tls
tls_checkpeer yes
tls_cacertfile /etc/openldap/cacerts/cacert.pem
结束语
按照本文给出的提示,我们现在已经使用轻量级目录访问协议(LDAP)构建了一个集中的身份验证系统。我们最初是通过配置 LDAP 服务器来响应对 “dc=ibm,dc=com” 的基本请求开始入手的。我们使用了一组 Perl 脚本来将用户帐号信息迁移到 LDAP 目录中。我们对 Linux 用户帐号服务、PAM 和 NSS 服务进行了修改,从而可以从 LDAP 服务器中检索用户信息。还设置了一个 LDAP 服务器副本作为备用服务器来响应客户机的请求。然后,使用 TLS 协议在 LDAP 客户机和服务器之间对通信进行安全加密。恭喜! 为了参考方便,下面给出了本文中使用的配置文件的完整清单。
清单 18. 本文例子中使用的服务器 /etc/openldap/slapd.conf 文件 #
# See slapd.conf (5) for details on configuration options. #
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema
loglevel 256
pidfile /var/run/slapd.pid argsfile /var/run/slapd.args
# The next three lines allow use of TLS for encrypting connections. TLSCipherSuite HIGH:MEDIUM:+SSLv2
TLSCACertificateFile /etc/openldap/cacerts/cacert.pem TLSCertificateFile /etc/openldap/slapdcert.pem TLSCertificateKeyFile /etc/openldap/slapdkey.pem
# access control policy:
# Restrict password access to change by owner and authentication. # Allow read access by everyone to all other attributes.
access to attrs=shadowLastChange,userPassword by self write by * auth
access to * by * read
####################################################################### # database definition
#######################################################################
database bdb
suffix \
rootdn \rootpw {MD5}ijFYNcSNctBYg
directory /var/lib/ldap
# Indices to maintain for this database
index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub #Replicas of this database replica host=dhcp64-253.ibm.com:389 binddn=\ credentials=secret bindmethod=simple replogfile /var/lib/ldap/replog
清单 19. 本文例子中使用的服务器 /etc/openldap/ldap.conf 文件 # # LDAP Defaults # # See ldap.conf(5) for details HOST 127.0.0.1 BASE dc=ibm,dc=com TLS_CACERTDIR /etc/openldap/cacerts TLS_REQCERT allow
清单 20. 本文例子中使用的客户机 /etc/ldap.conf 文件
a
# @(#)$Id: ldap.conf,v 1.34 2004/09/16 23:32:02 lukeh Exp $ #
# This is the configuration file for the LDAP nameservice # switch library and the LDAP PAM module. #
# PADL Software # http://www.padl.com #
# Your LDAP server.
# Multiple hosts may be specified, each separated by a # space.
host dhcp64-233.ibm.com dhcp64-233.ibm.com
# The distinguished name of the search base.
base dc=ibm,dc=com
# OpenLDAP SSL mechanism, start_tls mechanism uses the normal LDAP port 389 ssl start_tls
#Require and verify server certificate tls_checkpeer yes
# CA certificates for server certificate verification tls_cacertfile /etc/openldap/cacerts/cacert.pem
pam_password md5
参考资料 学习
? ?
您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
OpenLDAP 主页 是 OpenLDAP 项目的主页。其中包含了有关如何配置 OpenLDAP 的丰富信息,以及将来的路线图和版本信息。请确保阅读 OpenLDAP Software 2.3 Administrator's Guide。
? ? 在 OpenSSL Project 中,可以找到有关 SSL 和 TLS 的信息。
在 LDAP Linux HOWTO 中,我们可以找到有关在 Linux 机器上安装、配置、运行和维护 LDAP(Lightweight Directory Access Protocol)服务器的详细信息。请在 LDAP Implementation HOWTO 中阅读使用 pam_ldap 和 nss_ldap 进行 LDAP 身份验证的讨论。
PADL 主页 提供了 Perl 迁移脚本 nss_ldap 和 pam_ldap 以及很多其他有用的 LDAP 工具。
在 developerWorks Linux 专区 中可以找到为 Linux 开发人员准备的更多资源。 随时关注 developerWorks 技术活动和网络广播。
? ? ?
获得产品和技术
? ?
索取免费的 SEK for Linux,这有两张 DVD,包括最新的 IBM for Linux 的试用版软件,包括 DB2?、Lotus?、Rational?、Tivoli? 和 WebSphere?。
在您的下一个开发项目中采用 IBM 试用版软件,这可以从 developerWorks 上直接下载。
讨论
? ?
OpenLDAP 邮件列表 是讨论 OpenLDAP 的主要论坛。 通过参与 developerWorks blogs 加入 developerWorks 社区。
补充:
slapd
4 使用IPv4标准
6 使用IPv6标准
-d debug模式 一般用 -1,1,256
-f 指定配置文件的路径
-h 可以指定启动服务的端口 ldap://:2004 用2004端口启动服务 slurpd
-d debug模式 一般用4 -f 指定配置文件 -r 指定复制
ldapadd
-x 进行简单认证 -D 用来绑定服务器的DN -h 目录服务的地址 -w 绑定DN的密码
-f 使用ldif文件进行条目添加的文件
例子ldapadd -x -D \ ldapadd -x -D \这样写就是在命令行添加条目)
ldapsearch
-x 进行简单认证
-D 用来绑定服务器的DN -w 绑定DN的密码
-b 指定要查询的根节点 -H 制定要查询的服务器
ldapsearch -x -D \-w secret -b \使用简单认证,用 \进行绑定,要查询的根是 \。这样会把绑定的用户能访问\下的所有数据显示出来。
ldapdelete -x -D 'cn=root,dc=it,dc=com' -w secert 'uid=zyx,dc=it,dc=com'这样就可以删除'uid=zyx,dc=it,dc=com'记录了,应该注意一点,如果o或ou中有成员是不能删除的。
ldappasswd
-x 进行简单认证 -D 用来绑定服务器的DN -w 绑定DN的密码 -S 提示的输入密码