LDAP 与传输层安全(TLS)

LDAP 与传输层安全(TLS)

向 OpenLDAP 服务器认证时,最好使用加密会话。传输层安全协议(TLS)可以实现这一点。

这里将自行充当证书颁发机构(CA),创建并签署 LDAP 服务器证书。指南使用 certtool 完成这些操作。为了简便,所有操作都在 OpenLDAP 服务器本机完成;实际的内部 CA 应当放在其他位置。

注意

关于 Ubuntu 中证书管理的一般信息,参见证书介绍。安装自定义根 CA 可参见在信任库中安装根CA证书。

安装 gnutls-bin 和 ssl-cert:





sudo apt install gnutls-bin ssl-cert

为 CA 创建私钥:





sudo certtool --generate-privkey --bits 4096 --outfile /etc/ssl/private/mycakey.pem

创建 /etc/ssl/ca.info 模板文件,定义 CA:

cn = Example Company
ca
cert_signing_key
expiration_days = 3650

创建自签名 CA 证书:





sudo certtool --generate-self-signed \
--load-privkey /etc/ssl/private/mycakey.pem \
--template /etc/ssl/ca.info \
--outfile /usr/local/share/ca-certificates/mycacert.crt

注意

--outfile 的路径是正确的。这里把 CA 证书写入 /usr/local/share/ca-certificates,update-ca-certificates 从这个目录读取本地受信任 CA。若要有选择地启用 /usr/share/ca-certificates 中的 CA,可以运行 dpkg-reconfigure ca-certificates。

运行 update-ca-certificates,把新 CA 证书加入受信任列表。注意输出显示新增一个 CA:





sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

这也会创建 /etc/ssl/certs/mycacert.pem 符号链接,指向 /usr/local/share/ca-certificates 中的实际文件。

为服务器创建私钥:





sudo certtool --generate-privkey \
--bits 2048 \
--outfile /etc/ldap/ldap01_slapd_key.pem

注意

把文件名中的 ldap01 换成服务器主机名。用证书和密钥所服务的主机及服务命名,有助于区分用途。

创建 /etc/ssl/ldap01.info,内容如下:

organization = Example Company
cn = ldap01.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 365

以上证书有效期为一年,仅适用于 ldap01.example.com 主机名。请按实际需求调整。

创建服务器证书:





sudo certtool --generate-certificate \
--load-privkey /etc/ldap/ldap01_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/mycacert.pem \
--load-ca-privkey /etc/ssl/private/mycakey.pem \
--template /etc/ssl/ldap01.info \
--outfile /etc/ldap/ldap01_slapd_cert.pem

调整属组与权限:





sudo chgrp openldap /etc/ldap/ldap01_slapd_key.pem




sudo chmod 0640 /etc/ldap/ldap01_slapd_key.pem

服务器已准备好接收新的 TLS 配置。

创建 certinfo.ldif,内容如下;按实际情况调整路径和文件名:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ldap01_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ldap01_slapd_key.pem

使用 ldapmodify,通过 slapd-config 数据库把 TLS 配置告知 slapd:





sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif

如果需要访问 LDAPS(LDAP over SSL),编辑 /etc/default/slapd,在 SLAPD_SERVICES 中加入 ldaps:///:

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

然后重启 slapd:





sudo systemctl restart slapd

注意:不作以上修改也可以使用 StartTLS,且启用 StartTLS 不需要重启 slapd。

测试 StartTLS:





ldapwhoami -x -ZZ -H ldap://ldap01.example.com

anonymous

测试 LDAPS:





ldapwhoami -x -H ldaps://ldap01.example.com

anonymous

OpenLDAP 副本的证书

为 OpenLDAP 副本(consumer)生成证书和密钥时,先创建一个临时存放目录,后续将传输此目录,并运行:





mkdir ldap02-ssl
cd ldap02-ssl
certtool --generate-privkey \
--bits 2048 \
--outfile ldap02_slapd_key.pem

为 consumer 服务器创建 ldap02.info,按需求调整其中的值:

organization = Example Company
cn = ldap02.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 365

创建 consumer 证书:





sudo certtool --generate-certificate \
--load-privkey ldap02_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/mycacert.pem \
--load-ca-privkey /etc/ssl/private/mycakey.pem \
--template ldap02.info \
--outfile ldap02_slapd_cert.pem

注意

这里必须用 sudo 访问 CA 私钥,因此生成的证书属于 root。在把文件复制到 consumer 前,应将所有者改回普通用户。

复制一份 CA 证书:





cp /etc/ssl/certs/mycacert.pem .

准备完成。现在把 ldap02-ssl 目录传输到 consumer。这里使用 scp,请按实际环境调整:





cd ..
scp -r ldap02-ssl user@consumer:

在 consumer 上安装刚传输的证书文件:





sudo cp ldap02_slapd_cert.pem ldap02_slapd_key.pem /etc/ldap
sudo chgrp openldap /etc/ldap/ldap02_slapd_key.pem
sudo chmod 0640 /etc/ldap/ldap02_slapd_key.pem
sudo cp mycacert.pem /usr/local/share/ca-certificates/mycacert.crt
sudo update-ca-certificates

创建 certinfo.ldif,内容如下;必要时调整路径和文件名:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ldap02_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ldap02_slapd_key.pem

配置 slapd-config 数据库:





sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif

与前面相同,若要启用 LDAPS,编辑 /etc/default/slapd,给 SLAPD_SERVICES 添加 ldaps:///,然后重启 slapd。

测试 StartTLS:





ldapwhoami -x -ZZ -H ldap://ldap02.example.com

anonymous

测试 LDAPS:





ldapwhoami -x -H ldaps://ldap02.example.com

anonymous

来源:LDAP and Transport Layer Security (TLS)。Ubuntu Server 文档,© 2026 Canonical 及文档贡献者;原文更新于 2026-06-26。原始源文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容