配置OpenLDAP使用TLS通信

配置OpenLDAP使用TLS通信

OpenLDAP 和 OpenSSL 简介
OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的。
OpenSSL 是 SSL/TLS 加密算法及通信协议的开源实现包,实现了 SSLv2、SSLv3、TLSv1 及 TLSv1.2 的加密算法和通信协议,并提供 API 给第三方应用。第三方应用可以很容易的使用 OpenSSL 来将明文通信加密。OpenLDAP 和 OpenSSL 的互相配合是本文的主要内容,包括:OpenLDAP 服务端的 SSL/TLS 配置、OpenLDAP 客户端的 SSL/TLS 配置。
本文讲述的所有内容和命令适用于 Redhat Enterprise Linux 6.3,其他发行版本的 Linux 可能略有不同。
回页首
配置 OpenLDAP 使用 SSL/TLS 加密数据通信
SSL/TLS 加密原理简介
SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。
SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开。
如何配置 OpenLDAP 客户端和服务端的算法列表将在本文的后续内容中做重点介绍,用户可以通过控制这个列表来提高安全等级,或者降低安全等级来适应更多的算法。
OpenSSL 常用命令
OpenSSL 提供了为数众多的命令来帮助用户使用和查看 SSL/TLS 加密算法、查看证书、生成证书、测试 SSL/TLS 连接等等,以下是一些常用命令的介绍。
• 查看 OpenSSL 支持的所有算法
#openssl ciphers
• 查看 OpenSSL 是否支持某个算法,如 ECDH-ECDSA-AES128-GCM-SHA256

openssl ciphers ECDH-ECDSA-AES128-GCM-SHA256

• 查看 OpenSSL 是否支持某个协议,如 TLSv1.2

openssl ciphers TLSv1.2

• 查看 x509 证书

openssl x509 -in cert.pem -text –noout

• 检测与 LDAP server 的连接
• # openssl s_client -connect 9.181.137.155:636 -showcerts -state
-CAfile /opt/ibm/director/vmi/data/sec/vmitruststore.pem
• 生成自签名的 CA 证书
• #openssl req -x509 -newkey rsa:1024 -passout pass:123456 -days 3650
• -keyout whhit.pem.key -out whhit.pem.cer -subj
“/CN=whhit.me/OU=WeRun Club/O=whhit/L=Weihai/S=Shandong/C=CN”
• 生成私钥
#openssl genrsa -des3 -out whhit.pem.key -passout pass:123456 1024
• 使用指定的私钥生成一个 CSR (Certificate Signing Request)
• #openssl req -new -key whhit.pem.key -passin pass:123456
• -out whhit.pem.csr -subj
“/CN=whhit.me/OU=WeRun Club/O=whhit/L=Weihai/S=Shandong/C=CN”
• 将加密的私钥导出为明文的私钥
#openssl rsa -in whhit.pem.key -passin pass:123456 -out whhit.pem.clear.key
• 使用指定的私钥签名生成证书
#openssl x509 -req -days 3650 -in whhit.pem.csr -signkey whhit.pem.clear.key -out whhit.pem.cer
• 将私钥和证书转化为 PKCS#12 格式的单个文件
• #openssl pkcs12 -export -in whhit.pem.cer -inkey whhit.pem.key -passin pass:123456
-out whhit.p12 -passout pass:123456 -name tomcat
OpenLDAP 的 SSL/TLS 服务器端配置
OpenLDAP 服务端的配置包括软件安装、证书生成、密码组配置等,下面是详细介绍。
• 服务器端需要安装的软件
检查 OpenLDAP 和 OpenSSL 的组件是否已经安装,如果没有,需要先安装如下组件:
openldap2-back-meta-2.4.20-35,openldap2-client-2.4.20-35,openldap2-2.4.20-35,
openldap2-back-perl-2.4.20-35,openssl-1.0.1e-13,openssl-32bit-1.0.1e-13,
php5-openssl-5.2.14-0.7.30.38.2,python-openssl-0.7.0-217
• 用 PKI 生成 SSL/TLS 服务器证书
创建证书分为 3 个步骤,创建 CA、创建证书请求和用 CA 对证书请求签名生成证书。

  1. 创建 CA
    /etc/pki/tls/misc 是工作目录,/etc/pki/CA 是存放所有 CA 相关文件的目录。如果脚本检测到/etc/pki/CA 下面有文件存在,CA 脚本什么工作也不会做。为确保 CA 脚本能正常工作,需要先把/etc/pki/CA 目录下的文件全删除。

cd /etc/pki/tls/misc (进入工作目录)

./CA –newca (生成 CA)

  1. 创建 Server 端证书
    证书的生成分为两步,生成证书请求文件和用 CA 对证书文件进行签名。
    #./CA.pl –newreq (生成证书请求)
  2. CA 对证书请求签名
    #./CA.pl –sign
    在/etc/pki/tls/misc 路径下创建了 3 个文件,newreq.pem 创建证书请求文件,newcert.pem CA 签发的证书,newkey.pem 证书对应的钥匙。
    重命名证书和私钥文件

mv newcert.pem server.cert

mv newkey.pem server.key

chmod 644 server.cert

chmod 644 server.key

把这两个文件和 CA 的证书文件拷贝到 OpenLDAP 存放证书的目录下,一般在/etc/openldap/cacerts。如果 CA 与 LDAP server 不在同一台机器上需要用 scp 命令将以下文件拷贝到 LDAP server 相应目录。

mv server.cert /etc/openldap/cacerts

mv serve.key /etc/openldap/cacerts

cp …/…/CA/cacert.pem /etc/openldap/cacerts

• 配置 LDAP 服务器

  1. 停掉 LDAP 服务
    #service ldap stop
  2. 编辑/etc/openldap/slapd.conf 在 slapd.conf 文件中加入以下内容
  3. TLSCACertificateFile /etc/openldap/cacerts/cacert.pem #配置 CA 证书的路径
  4. TLSCertificateFile /etc/openldap/cacerts/server.cert #配置 server 证书的路径
  5. TLSCertificateKeyFile /etc/openldap/cacerts/server.key #配置 server 私钥的路径
  6. TLSCipherSuite ALL:!TLSv1.1:TLSv1.2:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM:!LOW
  7. :!EXPORT:@STRENGTH #支持的协议密码及不支持的协议和密码,!表示不支持
  8. TLSVerifyClient never # 设置是否验证 client 的身份,其值可以是 never/allow/try/demand,
  9. #never 不需要验证 client 端的身份,Client 端只需要有 CA 证书就可以了
  10. #allow Server 会要求 client 提供证书,如果 client 端没有提供证书,会话会正常进行
  11. #try Client 端提供了证书,但是 Server 端有可能不能校验这个证书,这个证书会被忽略,会话正常进行
    #demand Server 端需要认证 client 端的身份,Client 端需要有自己的证书和私钥
  12. 启动 LDAP 服务
    #service ldap start
    OpenLDAP 的 SSL/TLS 客户端配置
    OpenLDAP 客户端的配置包括证书创建、服务器连接配置、证书配置、密码组配置等,以下是详细的步骤。
    • Client 端的证书文件制作
    Client 端的证书制作与 Server 端类似,先创建请求文件,然后用 CA 对请求文件进行签名。签名时一般采用 Client 的主机名(hostname)做为 Common name。证书的名字实际上就是证书中的 Common Name 字段。这个字段应该从证书中进行检索,并根据主机名进行验证,如果二者不能匹配,证书的安全性就会受到质疑。有些公司在不同的主机上使用相同的证书,即使证书中的 Common Name 只是用于一个主机的,这是为了确保证书来自相同的公司,能够进行更深入的检查。Common Name 具体取什么值取决于项目的安全性需要。
    #./CA.pl –newreq (生成证书请求)
    #./CA.pl –sign

mv newcert.pem client.cert

mv newkey.pem client.key

chmod 644 client.cert

chmod 644 client.key

把这两个文件和 CA 的证书文件用 scp 命令拷贝到 Client 端 OpenLDAP 存放证书的目录下,如/etc/openldap/cacerts。
• 编辑/etc/openldap/ldap.conf
• URI ldaps://vm189.cn.ibm.com:636 # 一定要和 server 的证书里输入的 full qualified name 一样
• TLS_CACERT /etc/openldap/cacerts/cacert.pem # CA 的证书
• TLS_REQCERT never # client 是否要求认证 server 端
• TLS_CIPHER_SUITE ALL:!TLSv1.1:!TLSv1:!SSLv3:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM:!LOW:
!EXPORT:@STRENGTH
• 重启 LDAP 服务
#service ldap restart
• 检验与 LDAP server 之间是否能连通
• #openssl s_client –connect vm189.cn.ibm.com:636 –CAfile /etc/openldap/cacerts/cacert
.pem-showcerts –state
验证 OpenLDAP 服务器端和客户端的 SSL/TLS 协议协商方式
为了验证 OpenLDAP 的服务端和客户端的 SSL/TLS 连接协议的正确性,我们可以按照如下的步骤来检验。
• 配置服务器端并重启服务器端的 LDAP Service
按照前面叙述的步骤配置好 LDAP 服务器。
重启 LDAP Service
#service ldap restart
导入 LDAP user 信息
将 ldif 文件上传到 ldap 服务器,如 tmp 目录。如导入的文件名字为 ldapou.ldif, 其文件中关于 oladmin 账户的内容如下:
dn: uid=oladmin,ou=People,c=cn,dc=ibm,dc=com
uid: oladmin
cn: oladmin
sn: oladmin
mail: [email protected]
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
objectClass: posixAccount
userPassword: passw0rd
uidNumber: 501
gidNumber: 501
homeDirectory: /home/oladmin
运行如下命令增加用户和组到 LDAP 服务器目录

ldapadd -x -D “cn=root,c=cn,dc=ibm,dc=com” -w passw0rd -f /tmp/ldapou.ldif

重启 LDAP Service
#service ldap restart
• 配置客户端并重启客户端的 LDAP Service
在客户端的/etc/openldap/目录中配置 ldap.conf 文件,内容如下:
TLS_REQCERT never
TLS_CIPHER_SUITE ALL:!TLSv1.1:!TLSv1:!SSLv3:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM
:!LOW:!EXPORT:@STRENGTH
URI ldaps://vm189.cn.ibm.com:636 #ldap server 地址
base c=cn,dc=ibm,dc=com
binddn cn=root,c=cn,dc=ibm,dc=com
bindpw crypt{77f132b2f9d77723}
searchfilter (&(uid=%v)(objectclass=inetOrgPerson))
pam_login_attribute uid
ldap_version 3
timelimit 30
bind_timelimit 30
bindpw_key /etc/openldap/fsm.data #密码
TLS_CACERT /opt/ibm/director/vmi/data/sec/vmitruststore.pem #CA 证书
pam_lookup_policy yes
• 在客户端验证服务器端的 LDAP user 信息
运行 ldapsearch 命令,查看服务器端的 user

ldapsearch -x -ZZ -h 9.181.137.189 636 (ZZ 选项用来启动 TLS 连接)

命令运行后的结果

extended LDIF

LDAPv3

base (default) with scope subtree

filter: (objectclass=*)

requesting: 636

cn, ibm.com

dn: c=cn,dc=ibm,dc=com

People, cn, ibm.com

dn: ou=People,c=cn,dc=ibm,dc=com

Group, cn, ibm.com

dn: ou=Group,c=cn,dc=ibm,dc=com

oladmin, People, cn, ibm.com

dn: uid=oladmin,ou=People,c=cn,dc=ibm,dc=com
……(此处省略了其他账户的信息)
从返回的结果中可以找到从服务器端导入的 user,如 oladmin 等账户信息,证明 TLS LDAP 连接时建立好了。
以上是第三方证书。如果是自签名证书按以下配置来:
1.为啥要用TLS?
Openldap默认使用简单验证,对slapd的所有访问都使用明文密码通过未加密通道进行。为了确保信息安全,需要对信息进行加密传输,SSL(Secure Sockets Layer)是一个可靠的解决方案。
它使用 X.509 证书,由可信任第三方(Certificate Authority (CA))进行数字签名的一个标准格式的数据。有效的数字签名意味着已签名的数据没有被篡改。如果签名的数据被更改,将不会通过验证
SSL/TLS 加密原理简介
SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。
SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开。
环境说明:
主机名 角色 IP地址
Liutao openldap server 192.168.1.150
Xmb250 openldap client + CA 192.168.1.250

准备工作:

在两台CentOS上安装openssl.
在192.168.1.250上安装openldap-clients
yum -y install openssl
Yum –y install openldap_clients
[root@ldapclient ~]# rpm -qa openssl
openssl-1.0.1e-15.el6.x86_64
[root@ldapsrv02 ~]# rpm -qa openssl
openssl-1.0.1e-15.el6.x86_64
一、建立CA中心
1)配置CA签发信息
在1.250上执行
cd /etc/pki/CA/
touch index.txt
echo 01 >serial
cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak$(date +%F)
[root@ldapclient CA]# diff /etc/pki/tls/openssl.cnf.bak2017-09-04 /etc/pki/tls/openssl.cnf
[root@ldapclient CA]# vi /etc/pki/tls/openssl.cnf
修改文件以下内容:
< certificate = $dir/cacert.pem # The CA certificate

改为: certificate = $dir/CA.crt # The CA certificate

< private_key = $dir/private/cakey.pem# The private key

改为:private_key = $dir/private/CA.key # The private key

< countryName_default = XX

改为: countryName_default = CN

< #stateOrProvinceName_default = Default Province

改为: stateOrProvinceName_default = Shaanxi

< localityName_default = Default City

改为:localityName_default = Xian

< 0.organizationName_default = Default Company Ltd

改为:0.organizationName_default = GDS
< #organizationalUnitName_default =

改为: organizationalUnitName_default = OPM
改为:commonName = xmb250(1.250的主机名)
2)CA服务器生成自己的私钥
在1.250上执行:
[root@ldapclient CA]# (umask 077;openssl genrsa -out private/CA.key)
Generating RSA private key, 1024 bit long modulus
…++++++
…++++++
e is 65537 (0x10001)
3)CA服务器生成公钥(CA证书)
在1.250上执行:
[root@ldapclient CA]# openssl req -new -x509 -key private/CA.key >CA.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [CN]: CN
State or Province Name (full name) [Shaanxi]:
Locality Name (eg, city) [Xian]:
Organization Name (eg, company) [GDS]:
Organizational Unit Name (eg, section) [OPM]:
Common Name (eg, your name or your server’s hostname) []:xmb250
Email Address []:可以直接回车
二、openldap server生成私钥及证书请求文件

1)1.150生成自己的私钥
在1.150上执行:
[root@ldapsrv02 ~]# openssl genrsa -out ldapsrv02.key
Generating RSA private key, 1024 bit long modulus
…++++++
…++++++
e is 65537 (0x10001)
2)1.150生成证书请求文件
[root@ldapsrv02 ~]# openssl req -new -key ldapsrv02.key -out ldapsrv02.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:Xian
Organization Name (eg, company) [Default Company Ltd]:GDS
Organizational Unit Name (eg, section) []:OPM
Common Name liutao (这里写1.150主机名)
Email Address []: 可以不写直接回车

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:123456
三、CA服务器向openldap server签发证书
1)1.150向 1.250请求证书
在1.150上执行:
[root@ldapsrv02 ~]# scp ldapsrv02.csr [email protected]:/root
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.49.136’ (RSA) to the list of known hosts.
[email protected]’s password:
ldapsrv02.csr 100% 777 0.8KB/s 00:00
2)CA服务器颁发证书
在1.125上执行:
[root@ldapclient CA]# openssl ca -in /root/ldapsrv02.csr -out /root/ldapsrv02.crt
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Sep 18 08:22:46 2016 GMT
Not After : Sep 18 08:22:46 2017 GMT
Subject:
countryName = CN
stateOrProvinceName = Shaanxi
organizationName = Xian
organizationalUnitName =OPM
commonName = xmb250
emailAddress
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
39:FB:0E:BD:7D:03:7E:F3:9E:C3:BE:5B:4D:45:8B:63:B7:8B:7F:26
X509v3 Authority Key Identifier:
keyid:08:FF:94:52:EC:BD:97:12:5B:96:DD:1E:36:08:43:FF:AD:2F:7B:C8

Certificate is to be certified until Sep 18 08:22:46 2017 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
四、openldap server下载并安装证书

1)1.150服务器端下载证书
在1.250上执行:
[root@ldapclient CA]# scp /root/ldapsrv02.crt [email protected]:/root
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.150’ (RSA) to the list of known hosts.
[email protected]’s password:
ldapsrv02.crt 100% 3271 3.2KB/s 00:00
[root@ldapclient CA]# scp CA.crt 192.168.1.150:/etc/openldap/certs/
The authenticity of host 'ldapsrv02 (192.168.1.150)
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘ldapsrv02’ (RSA) to the list of known hosts.
root@ldapsrv02’s password:
CA.crt 100% 1078 1.1KB/s 00:00
2)1.150服务器端安装证书
cd /root/
mv ldapsrv02.crt /etc/openldap/certs/
mv /etc/pki/CA/ldapsrv02.key /etc/openldap/certs/ (注意ldapsrv02.key路径不一定是这里)
vi /etc/openldap/ldap.conf #编辑ldap.conf文件
修改以下内容:
URI ldap://liutao 注:服务器计算机名
BASE dc=gds,dc=com
TLS_CACERTDIR /etc/openldap/certs

[root@ldapsrv02 ~]# vi /etc/openldap/slapd.conf
修改以下内容:
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile /etc/openldap/certs/ldapsrv02.crt
TLSCertificateKeyFile /etc/openldap/certs/ldapsrv02.key
[root@ldapsrv02 ~]# service slapd stop #关闭slapd服务
Stopping slapd: [ OK ]
[root@ldapsrv02 ~]# slapd -h “ldap://192.168.1.150/ ldaps://192.168.1.150/” #重启slapd服务,这里同时监听加密和不加密端口
[root@ldapsrv02 ~]# netstat -tunlp|grep slapd #查看slapd监听的端口
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 1757/slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1757/slapd
tcp 0 0 :::636 ::? LISTEN 1757/slapd
tcp 0 0 :::389 ::? LISTEN 1757/slapd
五、ldapclient客户端测试

1)下载CA公钥
在1.250上执行:
cp /etc/pki/CA/private/CA.key /etc/openldap/certs/
说明:因为我的CA证书中心也同时作为ldap客户端,所以这里只需要拷贝到对应目录即可,如果CA证书中心和ldap客户端不在同一台服务器上,需要使用scp或者rz等其他方式拷贝到ldap客户端上。
2)修改ldap客户端配置

cp /etc/openldap/ldap.conf /etc/openldap/ldap.conf.bak$(date +%F)
[root@ldapclient CA]# vi /etc/openldap/ldap.conf
TLS_REQCERT allow
TLS_CACERTDIR /etc/openldap/certs
BASE dc=gds,dc=com
URI ldaps://liutao/

[root@ldapclient CA]# ldapwhoami -v -x -Z
ldap_initialize( )
ldap_start_tls: Can’t contact LDAP server (-1)
additional info: TLS error -8172:Peer’s certificate issuer has been marked as not trusted by the user.
ldap_sasl_bind(SIMPLE): Can’t contact LDAP server (-1)
上述错误的解决方法是:
编辑/etc/openldap/ldap.conf,添加““TLS_REQCERT allow”。

[root@ldapclient CA]# ldapwhoami -v -x -Z
ldap_initialize( )
ldap_start_tls: Operations error (1)
additional info: TLS already started
anonymous
Result: Success (0)
[root@ldapclient CA]# ldapsearch -x -D “cn=admin,dc=gds,dc=com” -H ldaps://192.168.1.150 -W -b “dc=gds,dc=com”
Enter LDAP Password: 默认是:secret

extended LDIF

LDAPv3

base with scope subtree

filter: (objectclass=*)

requesting: ALL

search result

search: 2
result: 32 No such object

numResponses: 1

#因为ldapsrv02仅仅是安装了openldap,并没有导入数据,所以这里的查询结果是正确的。

1.Server制作自签名证书

cd /etc/openldap/certs/

openssl genrsa -out ldap.key 1024 //私钥

openssl req -new -key ldap.key -out ldap.csr //生成签名请求

openssl req 接受生成密钥对的公共部分,添加一些位置信息,并将结果打包为Certificate Signing Request (CSR)由CA中心签署。
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name(eg, your name or your server’s hostname)[]:master.example.com //主机名用FQDN格式
Email Address []:[email protected]

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

openssl x509 -req -days 1095 -in ldap.csr -signkey ldap.key -out ldap.crt//公钥(自签名)

将生成的ldap.csr文件发送到CA进行签名。如果发送此文件到CA进行签名,则需要确保提供的所有信息拼写正确。这里不使用ca中心对csr进行签名。
完成自签名证书的制作,ldap.key(私钥)、ldap.crt(证书、公钥)。

2.修改目录权限及所有者

chmod 700 certs/

chown ldap.ldap certs/ -R

3.修改配置文件,添加证书路径

vim /etc/openldap/ldap.conf

TLS_CACERTDIR /etc/openldap/certs //更改证书目录
TLS_REQCERT allow //允许自签名证书(服务器、客户机都加入)

vim /etc/openldap/slapd.conf //修改配置文件

TLSCertificateFile /etc/openldap/certs/ldap.crt
TLSCertificateKeyFile /etc/openldap/certs/ldap.key

4.重新生成配置文件 并启动服务

service slapd stop

rm -rf /etc/openldap/slapd.d/*

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

chown ldap.ldap /etc/openldap/slapd.d/ -R

slapd -h “ldaps:///” //启动服务,监听636端口

5.客户端配置及测试
先利用setup工具配置,在# vim /etc/openldap/ldap.conf添加
TLS_REQCERT allow //允许自签名证书(服务器、客户机都加入)
TLS_CACERTDIR /etc/openldap/cacerts
URI ldaps://192.168.0.254
BASE dc=example,dc=com

客户端测试
1.# ldapwhoami -v -x -Z //匿名测试ssl链接
ldap_initialize( )
ldap_start_tls: Operations error (1)
additional info: TLS already started
anonymous
Result: Success (0)

2.ldaps验证用户密码
#ldapwhoami -D “uid=ldapuser1,ou=People,dc=example,dc=com” -W -H ldaps://192.168.0.254 -v
ldap_initialize( ldaps://192.168.0.254:636/??base )
Enter LDAP Password:
dn:uid=ldapuser1,ou=People,dc=example,dc=com
Result: Success (0)
-D 指定distinguish name
-W提示输入密码
-H 使用ldap://或ldaps://协议
-h IP
-v详细信息

3.搜索ldap服务器域信息

ldapsearch -x -b “dc=example,dc=com” -H ldaps://192.168.0.254

你可能感兴趣的:(openldap)