文章推荐:
ovirt-engine 接管外部LDAP用户(一): 搭建OpenLDAP服务
ovirt-engine 接管外部LDAP用户(二): 在ovirt-engine接入OpenLDAP
我们这里的目标是在ovirt engine中接管LDAP服务中的用户,正常来说,我们直接介绍如何在ovirt engine中配置就可以了,但是我在配置的过程中遇到一些与LDAP服务本身有关的注意点,所以我们首先一起来简单搭建一个LDAP服务。
我们选择在Centos7中搭建OpenLDAP。 我们开始吧 ????
安装OpenLDAP
yum -y install openldap-clients openldap-servers
启动服务
systemctl start slapd
systemctl enable slapd
配置LDAP条目
我们首先规划一下我们的目录结构。
假设我们的公司域名为 zhch_ovirt.com
一个简单的目录如下所示:
在创建这些条目(Entry)之前我们首先设置管理员DN和密码。
新建文件 root_config.ldif,内容如下:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=zhch_ovirt,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=zhch_ovirt,dc=com
dn: olcDatabase={2}hdb,cn=config
changeType: modify
add: olcRootPW
olcRootPW: {SSHA}ma4POz6o97RbRs3VppSBdTZfMsSlKzw6
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=zhch_ovirt,dc=com" read by * none
我们的管理员DN为 cn=admin,dc=zhch_ovirt,dc=com
密码为123456(olcRootPW的值是使用slappasswd命令得到的)
执行这个ldif文件
ldapmodify -Y EXTERNAL -H ldapi:/// -f root_config.ldif
然后我们再建立出目录示例图中的Entry。
新建文件 entries.ldif, 内容如下:
dn: dc=zhch_ovirt,dc=com
objectClass: dcObject
objectClass: organization
dc: zhch_ovirt
o: zhch_ovirt
dn: ou=users,dc=zhch_ovirt,dc=com
objectClass: organizationalUnit
ou: users
dn: uid=xiaohong,ou=users,dc=zhch_ovirt,dc=com
cn: xiaohong
objectclass: person
objectclass: uidObject
objectclass: top
sn: xiaohong
uid: xiaohong
userpassword: {SSHA}e0X7jqpUD2bnb6VN/MONfO7HLqjRG2gq
dn: uid=xiaoli,ou=users,dc=zhch_ovirt,dc=com
cn: xiaoli
objectclass: person
objectclass: uidObject
objectclass: top
sn: xiaoli
uid: xiaoli
userpassword: {SSHA}e0X7jqpUD2bnb6VN/MONfO7HLqjRG2gq
执行
ldapadd -f entries.ldif -x -D cn=admin,dc=zhch_ovirt,dc=com -w 123456
这样我们就将所需要的Entry都建好了。
重点注意: 我们在建用户条目时使用了uidObject这个objectClass,要想顺利接入到ovirt-engine中,我们的用户必须包含这个objectClass,同样我们也应该将用户的dn设置为 uid=xxxx,…. 这种形式,在接管之后,LDAP中的用户在ovirt engine中看到的名称就是uid的值。 |
OpenLDAP支持TLS
首先我们为OpenLDAP生产自签证书。
我们首先来到 /etc/pki/CA/ 目录下面。
首先执行
cd /etc/pki/CA
echo 0001 > serial
touch index.txt
为CA创建私钥
openssl genrsa -aes256 -out /etc/pki/CA/private/ca.key.pem
为CA创建证书
[root@localhost CA]# openssl req -new -x509 -days 3650 -key /etc/pki/CA/private/ca.key.pem -extensions v3_ca -out /etc/pki/CA/certs/ca.cert.pem
Enter pass phrase for /etc/pki/CA/private/ca.key.pem:
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) []:SHANDONG
Locality Name (eg, city) [Default City]:JINAN
Organization Name (eg, company) [Default Company Ltd]:zhch_ovirt.com
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:ldap-server.com
Email Address []:
上面这个过程第一步需要属于在创建私钥时设置的密码,然后就是要设置证书信息,其中重点注意的是:
重点注意:Common Name的值一定要与ovirt engine访问 OpenLDAP服务的域名保持一致,否则TLS证书认证会失败。下面还有一个证书保持一致就可以了。 |
我们现在已经有了CA,下面我们使用这个CA签发自己的OpenLDAP证书。
生成LDAP证书私钥
openssl genrsa -out private/ldap-server.com.key
生成LDAP证书的证书请求文件(csr)
[root@localhost CA]# openssl req -new -key private/ldap-server.com.key -out certs/ldap-server.com.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) []:SHANDONG
Locality Name (eg, city) [Default City]:JINAN
Organization Name (eg, company) [Default Company Ltd]:zhch_ovirt.com
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:ldap-server.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
重点注意:这里同样注意Common Name的设置 |
最后我们使用CA来签发这个证书申请。
openssl ca -keyfile private/ca.key.pem -cert certs/ca.cert.pem -in certs/ldap-server.com.csr -out certs/ldap-server.com.crt
现在我们来看看/etc/pki/CA目录中的文件。
[root@localhost CA]# tree
.
├── certs
│ ├── ca.cert.pem
│ ├── ldap-server.com.crt
│ └── ldap-server.com.csr
├── crl
├── index.txt
├── index.txt.attr
├── index.txt.old
├── newcerts
│ └── 01.pem
├── private
│ ├── ca.key.pem
│ └── ldap-server.com.key
├── serial
└── serial.old
4 directories, 11 files
其中:
1. ca.cert.pem CA证书
2. ca.key.pem CA私钥
3. ldap-server.com.crt OpenLDAP的TLS证书
4. ldap-server.com.key OpenLDAP的TLS私钥
我们现在有了这些证书后,就可以在OpenLDAP中使用TLS了。
复制相关证书文件到指定目录
mkdir /etc/openldap/cacerts
cp /etc/pki/CA/certs/ca.cert.pem /etc/openldap/cacerts/
cp /etc/pki/CA/certs/ldap-server.com.crt /etc/openldap/certs/
cp /etc/pki/CA/private/ldap-server.com.key /etc/openldap/certs/
修改文件权限
chown -R ldap:ldap /etc/openldap/certs
chown -R ldap:ldap /etc/openldap/cacerts/
修改OpenLDAP中的证书设置
新建文件 cert.ldif,内容如下:
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap-server.com.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap-server.com.key
执行
ldapmodify -Y EXTERNAL -H ldapi:// -f cert.ldif
新建文件 cert2.ldif,内容如下:
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/cacerts/ca.cert.pem
执行
ldapmodify -Y EXTERNAL -H ldapi:// -f cert2.ldif
最后我们编辑 /etc/sysconfig/slapd, 向 SLAPD_URLS 参数添加 ldaps:/// 。
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
防火墙设置
firewall-cmd --add-service=ldap
firewall-cmd --add-service=ldaps
这样我们就完成了整个TLS的设置。
到目前为止,我们已经搭建好了一个OpenLDAP服务?????,下一篇我们将这个LDAP服务接入到ovirt engine中??????。
参考:
https://www.golinuxcloud.com/ldap-tutorial-for-beginners-configure-linux
[…] ovirt-engine 接管外部LDAP用户(一): 搭建OpenLDAP服务 ovirt-engine 接管外部LDAP用户(二): 在ovirt-engine接入OpenLDAP […]