OpenLDAP 配置 TLS SSL 认证

OpenLDAP软件设计用于在各种计算环境中运行,从严格控制的封闭网络到全球Internet。因此,OpenLDAP软件支持许多不同的安全机制。

默认情况下:

1. 配置TLS/SSL创建CA证书

yum –y install openssl
cd /etc/pki/CA
(umask 077;openssl genrsa -out private/cakey.pem 2048)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 -subj "/C=CN/ST=福建省/L=厦门市/O=运维天涯/OU=湖里区/CN=ca.fooher.com/emailAddress=Service@fooher.com"
touch index.txt
echo "01" > serial

2. ldap服务器端创建证书请求

cd /etc/openldap/certs/
(umask 077;openssl genrsa -out openldapkey236.pem 2048)
这里 -subj 后面内容要和上面一致不然有警告提示
openssl req -new -key openldapkey236.pem -out openldap236.csr -days 3650 -subj "/C=CN/ST=福建省/L=厦门市/O=运维天涯/OU=湖里区/CN=ca.fooher.com/emailAddress=Service@fooher.com"

3. CA证书服务器签发证书

cd /etc/pki/CA
openssl ca -in /etc/openldap/certs/openldap236.csr -out /etc/openldap/certs/openldapcert236.pem -days 3650

 OpenLDAP CA证书服务器签发证书

4. 显示上面错误,请修改 openssl.cnf 文件,在第42行和330行

 OpenLDAP CA证书服务器签发证书

dir     = ./demoCA

改为

dir     = /etc/pki/CA

特别注意这个文件 index.txt

一定要是字节0,最好是删除然后用 touch inxex.txt 命令重建,,里面有一个字节都会导致openssl ca错误:

Using configuration from /usr/local/openssl/openssl.cnf
wrong number of fields on line 1 (looking for field 6, got 1, '' left)

然后执行下面命令:

openssl ca -in /etc/openldap/certs/openldap236.csr -out /etc/openldap/certs/openldapcert236.pem -days 3650

 OpenLDAP CA证书服务器签发证书

5. 配置 openldap 证书

cd /etc/pki/CA
/bin/cp certs/openldapcert236.pem cacert.pem /etc/openldap/certs/
chmod -R 0400 /etc/openldap/certs/openldap*

这里执行权限时不要,千万不要把 certs 文件设成 0400

chmod -R 0400 /etc/openldap/certs/{openldapcert236.pem,cacert.pem,openldapkey236.pem}

注意:不要有空行,修改下面内容

olcTLSCACertificatePath: /etc/openldap/certs
olcTLSCertificateFile: "OpenLDAP Server"
olcTLSCertificateKeyFile: /etc/openldap/certs/password

改为

vim /etc/openldap/slapd.ldif
olcTLSCACertificateFile: /etc/openldap/certs/cacert.pem
olcTLSCertificateFile: /etc/openldap/certs/openldapcert236.pem
olcTLSCertificateKeyFile: /etc/openldap/certs/openldapkey236.pem
olcTLSVerifyClient: never

注意:在生产环境中重新生成配置文件一定要备份 "/etc/openldap/slapd.d" 这个目录,
防止 slapd.ldif 文件里的配置和 slapd.d 里的配置不一致,不然会导致有的配置不生效或者丢失掉,这里千万要注意.

/bin/cp /etc/openldap/slapd.d /etc/openldap/slapd.d_bak_$( +%Y%m%d%H).log
systemctl stop slapd
vim /etc/sysconfig/slapd

修改下面的一行

SLAPD_URLS="ldapi:/// ldap:///"

改为:

SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"

6. 删除配置文件,重新生成,删除前请备份

rm -rf /etc/openldap/slapd.d/*
slapadd -n -0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif
chown -R ldap:ldap /etc/openldap/slapd.d
systemctl daemon-reload
systemctl restart slapd

现在可以通过 LDAP admin 客户端连接 ssl 636 端口 tls测试是否正常,记得要把防火墙636端口要放行.
注意:如果无法启动ssl,检查证书文件权限,这里没有导入 cacert.pem 证书,状态下会显示 "无法找到该证书的颁发者"
LDAP admin 客户端连接 ssl

7. 开始导出 cacert.pem 证书,用 sz 命令保存到你指定的位置

yum -y install lrzsz
yum clean all && yum makecache
cd /etc/openldap/certs
sz cacert.pem

然后使用谷哥浏览器在地址栏里输入 "chrome://settings/security" 找到 "管理证书 管理 HTTPS/SSL 证书和设置" 点击进去,选择 "受信任的根证书颁发机构" 最后导入
添加自签发的SSL 证书为受信任的根证书
添加自签发的SSL 证书为受信任的根证书

8. 选择 cacert.pem 证书存放位置

添加自签发的SSL 证书为受信任的根证书

选择 "是" 确定完成

添加自签发的SSL 证书为受信任的根证书

9. 查看证书是否导入成功

添加自签发的SSL 证书为受信任的根证书

10. 也可以用使用 快捷键 "Win+R" 运行命令 "certmgr.msc" 进行查看

添加自签发的SSL 证书为受信任的根证书

11. 客户端配置tls/ssl,修改以下两项

vim /etc/openldap/ldap.conf
TLS_REQCERT hard
TLS_CACERT /etc/openldap/certs/cacert.pem

在这里我们签发证书时,我们用的是 "ca.fooher.com",所以下面一定要填写这个地址,不然报错.
域名 ca.fooher.com dn 没有解析的话请把这个域名加入到 /etc/hosts 里

127.0.0.1          ca.fooher.com

本地测试

ldapsearch -x -LLL -H ldaps:///

远程测试

ldapsearch -x -LLL -H ldaps://ca.fooher.com dn -b dc=fooher,dc=com dn

添加自签发的SSL证书测试