目的:openldap默认的数据传输方式是非加密的,任何主机任何用户都可以查询ldapserver的用户详细信息。这样很不安全,所以l我们需要ldap访问集成ssl实现加密传输,只有通过认证的ldap客户端才可以访问。
ldapserver 未启用TLS: 服务端:389 任何用户都可以查询访问
ldapserver 启用TLS后: 服务端口:636 通过认证的用户才能查询访问
配置openldap服务端开启TLS加密:
创建CA证书:
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 36500 -subj "/C=CN/ST=ShanXi/L=XiAn/O=asiainfo.com/OU=edu/CN=ca.yinkp.com"
touch index.txt
echo "01" > serial
ldap服务器端创建证书请求
cd /etc/openldap/certs/
(umask 077; openssl genrsa -out openldapkey.pem 2048)
openssl req -new -key openldapkey.pem -out openldap.csr -days 36500 -subj "/C=CN/ST=ShanXi/L=XiAn/O=yinkp.com/OU=edu/CN=10.1.236.84"
chown ldap:ldap -R /etc/openldap/certs/*
chmod -R 0400 /etc/openldap/certs/*
利用自建的CA中心签发证书:
openssl ca -in openldap.csr -out openldapkey.pem -days 36500
配置slapd启用监听ldaps
vi /etc/sysconfig/slapd
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
重启openldap服务:
service slapd restart
配置Openldap服务端,添加相关的证书路径
vi certs.ldif
- name: Configure TLS CA
ldap_attr:
dn: cn=config
name: "{{ item.key }}"
values: "{{ item.value }}"
server_uri: ldapi:///
state: exact
with_dict:
olcLogLevel: "-1"
olcTLSCACertificateFile: "{{p12i_ldap_cacert}}"
notify: Restart slapd
- name: Configure TLS
shell:
cmd: |
cat <<EOF | /usr/bin/ldapmodify -Q -H ldapi:/// -Y EXTERNAL -D "cn=admin,{{p12i_ldap_base}}" -w "{{ldap_admin_password}}"
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: "{{p12i_ldap_cert}}"
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: "{{p12i_ldap_key}}"
EOF
no_log: True
when: p12i_ldap_change_admin_password
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
# vim /etc/openldap/ldap.conf (添加)
TLS_CACERTDIR /etc/openldap/certs //更改证书目录
TLS_REQCERT allow //允许自签名证书(服务器、客户机都加入)
配置Openldap客户端使用SSL 加密:
拷贝服务端主机的证书到客户端:
scp openldap.csr openldapkey.pem 10.1.236.84:/etc/openldap/certs
# vim /etc/openldap/ldap.conf (添加)
TLS_CACERTDIR /etc/openldap/certs //更改证书目录
TLS_REQCERT allow //允许自签名证书(服务器、客户机都加入)
客户端访问测试:
ldapsearch -x -b "dc=yinkp,dc=com" -H ldaps://10.1.236.83
正常情况下,只有开启TLS且证书正确的openldap客户端可以访问。
网友评论