6、openldap的OLC配置

一、将配置转换成使用olc

1、停止LDAP服务器;
2、编辑slapd.conf
在第一个数据库配置之前加如下的配置项
# before the first database definition
database config
# NOTE: the suffix is hardcoded as cn=config and 
# MUST not have a suffix directive
# normal rules apply - rootdn can be anything you want
# but MUST be under cn=config
rootdn "cn=admin,cn=config"
# use any of the supported password formats e.g. {SSHA} etc
# or plaintext as shown
rootpw config

    
    
 
3、转换静态配置到动态配置
   
   
[bsd]cd /usr/local/openldap
# MUST - create standard default directory
mkdir slapd.d
# convert slapd.conf slaptest在sbin下面
slaptest -f slapd.conf -F slapd.d
 
# depending on the logged in user when you ran slaptest
# you may need to change ownership of slapd.d and all its files
chown -R ldap:ldap slapd.d
# permissions interestingly seem to need
# a minimum of 0750
chmod -R 0750 slapd.d
 
# rename slapd.conf
# this step is not necessary but is a useful
# precaution to ensure you access slapd.d
mv slapd.conf slapd.conf.bak
 
# 用服务的方式启动
[fc]/etc/rc.d/init.d/slapd start
# 手工启动ldap服务,u表示启动的用户名,-g表示ldap所在的用户组
slapd -u ldap -g ldap
 
# [bsd] users need to add
# slapd_cn_config="YES" to /etc/rc.conf
# 如果上述的命令执行失败,执行如下的指令
slapd -d -1 -u ldap -g ldap
6、连接config库
用ldap客户端工具进行连接:


二、使用OLC对LDAP进行动态配置



OLC DIT Layout

6.1.1.4 使用cn=config段

6.1.1.4.1 OLC (cn=config) 概述

6.1.1.4.2 在OLC中添加/删除Schemas
手工转换


1、准备一个要进行转换的schema描述文件
   
   
# modified java.schema -- Java Object Schema - used for example purposes only
# Copyright Notice
#    Copyright (C) The Internet Society (1999).  All Rights Reserved.
# Attribute definition
attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6
NAME 'javaClassName'
DESC 'Fully qualified name of distinguished Java class or interface'
EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
 
# Object Class Definition
objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1
NAME 'javaContainer'
DESC 'Container for a Java object'
SUP top
STRUCTURAL
MUST cn )
上述内容放到一个LDIF文件中,并且新建一个cn={1}test, cn=schema,cn=config的ObjectClass。这个ObjectClass必须使用olcSchemaConfig作为父ObjectClass,必须使用 oldAttributeTypes (用来替换 attributetype) and olcObjectClasses (用来替换 objectclass)。将上述文件用如下的LDIF文件替换
    
    
# manually edited file
# lines in red were added, lines in green were modified
# there must be one space at the beginning and end of each line
# in the olcAttributeTypes and olcObjectClasses definitions
 
dn: cn=test,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: test
olcAttributeTypes: ( 1.3.6.1.4.1.42.2.27.4.1.6
NAME 'javaClassName'
DESC 'Fully qualified name of distinguished Java class or interface'
EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcObjectClasses: ( 1.3.6.1.4.1.42.2.27.4.2.1
NAME 'javaContainer'
DESC 'Container for a Java object'
SUP top
STRUCTURAL
MUST cn )
       
       
ldapadd将新的schema加入config
../bin/ldapadd -x -D "cn=admin,cn=config" -f /usr/local/openldap/my-schema/java.ldif -w 123456 
adding new entry "cn=java,cn=schema,cn=config"

 
使用slaptest进行转换


 
6.1.1.4.3 使用OLC配置 ACL/ACPs(cn=config) 
通过编辑olcDataBase={Z}config下的olcAccess属性可以来动态修改ACL属性, olcDataBase={Z}config可以有多少个?

6.1.1.4.4 Add/Delete Modules using OLC (cn=config)

6.1.1.4.5 Add/Delete Databases using OLC (cn=config)
    数据库类型定义必须使用 olcDatabaseConfig这个ObjectClass,并且必须有olcDataBase和olcDbDirectory这两个属性。这类实体的命名方式用 “olcDatabase={Z}{olcDataType},cn=config”。






















OpenLDAP 2.4 版本开始,默认配置方式从传统的 `slapd.conf` 转向了动态配置(**OLC: On-Line Configuration**),配置信息存储在 `slapd.d` 目录中。以下是针对动态配置(`slapd.d`)添加 SSL/TLS 支持的完整步骤: --- ### **1. 生成 SSL 证书** #### 1.1 创建证书目录(如果不存在) ```bash sudo mkdir -p /etc/ldap/ssl cd /etc/ldap/ssl ``` #### 1.2 生成自签名证书(测试用) ```bash # 生成根 CA 证书 sudo openssl req -x509 -newkey rsa:2048 -days 3650 -nodes \ -keyout ca.key -out ca.crt \ -subj "/CN=My LDAP CA/O=My Org/C=US" # 生成服务器证书请求(CSR) sudo openssl req -newkey rsa:2048 -nodes \ -keyout server.key -out server.csr \ -subj "/CN=ldap.example.com/O=My Org/C=US" # 用根 CA 签发服务器证书 sudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ -CAcreateserial -out server.crt -days 3650 ``` #### 1.3 设置证书权限 ```bash sudo chown -R openldap:openldap /etc/ldap/ssl sudo chmod 400 /etc/ldap/ssl/*.key sudo chmod 444 /etc/ldap/ssl/*.crt ``` --- ### **2. 配置 OpenLDAP 启用 SSL/TLS** #### 2.1 创建 LDIF 文件(`tls.ldif`) 创建文件 `/tmp/tls.ldif`,内容如下: ```ldif dn: cn=config changetype: modify add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ldap/ssl/ca.crt - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ldap/ssl/server.crt - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ldap/ssl/server.key - add: olcTLSCipherSuite olcTLSCipherSuite: HIGH:!aNULL:!eNULL:!3DES - add: olcTLSProtocolMin olcTLSProtocolMin: 3.3 ``` #### 2.2 应用配置 ```bash sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/tls.ldif ``` #### 2.3 修改监听地址 创建文件 `/tmp/listen.ldif`,内容如下: ```ldif dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/ldap/ssl/server.crt - replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ldap/ssl/server.key - replace: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ldap/ssl/ca.crt - replace: olcSecurity olcSecurity: tls=1 ``` 应用配置: ```bash sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/listen.ldif ``` --- ### **3. 重启 OpenLDAP 服务** ```bash # Ubuntu/Debian sudo systemctl restart slapd # RHEL/CentOS sudo systemctl restart slapd ``` --- ### **4. 验证 SSL 配置** #### 4.1 使用 `ldapsearch` 测试加密连接 ```bash ldapsearch -x -H ldaps://localhost:636 -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -W ``` #### 4.2 检查 SSL 握手 ```bash openssl s_client -connect localhost:636 -showcerts ``` #### 4.3 查看日志(调试用) ```bash journalctl -u slapd -f # 实时查看日志(Systemd系统) ``` --- ### **5. 客户端信任 CA 证书** #### 5.1 将 CA 证书复制到客户端 ```bash # Ubuntu/Debian sudo cp /etc/ldap/ssl/ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates # RHEL/CentOS sudo cp /etc/ldap/ssl/ca.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust ``` --- ### **6. 强制禁用明文 LDAP(可选)** 创建文件 `/tmp/disable_plain.ldif`: ```ldif dn: cn=config changetype: modify replace: olcSecurity olcSecurity: tls=1 ssf=256 ``` 应用配置: ```bash sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/disable_plain.ldif ``` --- ### **7. 常见问题处理** #### 错误:`TLS error -8172: Peer's certificate issuer is not recognized` - **原因**:客户端未信任 CA 证书。 - **解决**:确保客户端已正确安装 `ca.crt`。 #### 错误:`Permission denied` 访问证书 - **解决**: ```bash sudo chown openldap:openldap /etc/ldap/ssl/* sudo chmod 400 /etc/ldap/ssl/server.key ``` #### SELinux 限制(RHEL/CentOS) 允许 `slapd` 访问证书文件: ```bash sudo setsebool -P slapd_can_connect_ldap=true ``` --- ### **总结** 通过动态配置(`slapd.d`)启用 SSL/TLS 的步骤与传统 `slapd.conf` 不同,但核心逻辑一致。关键点: 1. 使用 `ldapmodify` 修改 `cn=config` 条目。 2. 确保证书路径和权限正确。 3. 客户端必须信任 CA 证书。
最新发布
05-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值