环境:
设置一些环境变量,修改<code>/etc/profile</code>或<code>/etc/bash.bashrc</code>:
其实只要在后面编译openldap时能找到<code>lib</code>和<code>include</code>下的库就行了,不止上面设置环境变量一种办法,解决办法还有直接复制对应的库文件到<code>/usr/lib</code>和<code>/usr/include</code>,或修改<code>/etc/ld.so.conf.d</code>,选其一即可。
编译安装:
出错提示解决:
如果没设置<code>cppflags</code>,上面的configure过程可能会提示<code>configure: error: bdb/hdb: berkeleydb not available</code>。
如果提示
或
请检查第一步的依赖是否已经安装,查看openldap解压目录下的<code>readme</code>看到required software。
<code>/usr/local/openldap-2.4</code>目录结构:
根据自己的需要加入schema,suffix一般填入域名,rootdn处是管理ldap数据的管理员用户,rootpw便是使用slappasswd生成的加密密码。
会自动使用<code>etc/openldap/slapd.conf</code>作为配置文件启动,并写入<code>/usr/local/openldap-2.4.31/var/run/slapd.args</code>中。这里有个问题未解决,配置loglevel和logfile但始终都看不到记录的日志,启动时加入<code>-d 256</code>能正常输出到屏幕上。
编辑一个添加entries的文件test.ldif:
插入数据:
到这里,一个简易版的ldap服务就搭建好了,下面介绍一些额外的高级配置。
如果在你的环境中已经有一个证书授权中心ca,那么只需要在ldap服务器上使用openssl生成密钥<code>.key</code>和签署请求<code>.csr</code>(第4、5步),然后将.csr发给ca服务器来生成证书<code>.crt</code>(第6步)。
如果是正式环境使用加密的话,389端口前的ip换成127.0.0.1。
ldapsearch
使用自带的ldapsearch或ldapadd客户端工具来连接slapd,需要设置<code>ldap.conf</code>或<code>~/.ldaprc</code>文件中的<code>tls_cacert</code>为信任的根证书才能使用,否则会提示
所以在在使用ldapsearch的服务器上修改<code>/etc/ldap/ldap.conf</code>:(<code>man ldap.conf</code>)
(当然也可以<code>tls_reqcert never</code>来信任根证书)
使用:
需要注意的是,<code>uri</code>后的 server name 必须与签署证书使用的 common name 一致。另外在ldap server本地执行ldapsearch默认使用的客户端配置文件是<code>$ldap_home/etc/openldap/ldap.conf</code>。
ldapbrower
另外一种方式是使用第三方ldap客户端连接工具,如ldapbrower:
连接:
信任根证书:
查看(可add entries):
通过<code>apt-get</code>在ubuntu上安装openldap。
安装过程中会提示输入admin密码。
安装完成后默认已经启动了slapd进程,与自己手动编译不同的是默认采用的配置文件有点区别:
<code>/etc/ldap/slapd.d</code> 是2.4.x版本新采用的配置文件目录,但手动编辑<code>slapd.d</code>目录下<code>ldif</code>是非常痛苦的,如果你不习惯新的配置目录格式,你可以通过修改<code>/etc/default/slapd</code>中的<code>slapd_conf=</code>为<code>slapd_conf="/etc/ldap/slapd.conf"</code>。
<code>slapd.conf</code>配置形式官方已经废弃了但依然支持,你还可以选择在编辑完熟悉的<code>slapd.conf</code>后使用openldap提供的slaptest工具将它转换成<code>slapd.d</code>配置目录:
我们把就的配置方式叫<code>slapd.conf</code>,新的配置方式叫<code>slapd-config</code>或olc(openldap configuration,也可以理解为online config)。<code>slapd.d</code>目录内包含许多ldif文件,就是<code>slapd.conf</code>中的内容转化成ldif格式,以构成一棵根为<code>cn=config</code>的目录树,这棵树包含了许多结点,如:<code>cn=module{0}</code>, <code>cn=schema</code>, <code>olcdatabase={1}bdb</code>……所有配置信息就是这些结点的属性。结构如下图:
使用这种新的配置目录的好处在于:
通过overlay截获修改这些目录属性的信息,然后对相应的数据结构进行修改,即管理员可以像修改其它目录属性一样修改<code>cn=config</code>目录树下的目录信息,并且修改后即时生效,无需重启服务器。
管理员不用像以前那样对服务器的配置文件进行修改,而是可以在任何能够连上ldap服务器的地方对配置文件内容进行修改,没有地域的限制。
但是当你需要配置多个backend时,<code>slapd-config</code>方式需要2.4.33版本以后才支持,此前的版本还只能使用<code>slapd.conf</code>方式。
ldif配置格式大致如下:
我们有时候会发现ldif里面会有一些条目是带<code>{0}</code>这样的数字,这是因为ldap数据库本身是无序的,这些索引一样的数字是用来强制一些依赖于其他配置的设置能够按照正确的顺序先后生效。不过它不用我们去关心,在添加entries时如果有需要会自动生成。
ldif文件中大部分属性和objectclass是以<code>olc</code>开头的,与就的配置风格<code>slapd.conf</code>有着一对一的属性配置选项,如<code>olcdatabase: {1}hdb</code>与<code>database bdb</code>对应。
待续