龙空技术网

Linux服务器Ldap安装及ldaps配置完整流程

散文随风想 104

前言:

此刻大家对“python ldapsearch”可能比较看重,朋友们都需要学习一些“python ldapsearch”的相关知识。那么小编同时在网摘上网罗了一些对于“python ldapsearch””的相关资讯,希望朋友们能喜欢,同学们快快来学习一下吧!

一.keytool生成ssl协议需要的相关文件

1.1 创建证书

keytool -genkey -v \-keystore presto-private.keystore \-alias presto-private \-keyalg RSA \-dname "CN=localhost, OU=, O=, L=, ST=, C=CN" \-validity 20000 \-keypass fvsord \-storepass fvsord

这里的-dname选项要求填很多,其实真正要填的只有Common Name, 通常只填写服务器域名,或者服务器的IP地址(localhost), 其它都可以留空的.

1.2 导出证书,由客户端安装  

keytool -export \-alias presto-private \-keystore presto-private.keystore \-file presto-public.cer \-storepass fvsord

1.3 客户端配置:(这里的alias不必与上面的一致)  

keytool -import \-alias presto-public \-file presto-public.cer \-keystore presto-public.store \-storepass fvsord

1.4 查看签名信息

keytool -v -list \-keystore /usr/local/keystores/test/presto-test.keystore

  关于keytool中各个选项的详解,我在这里就不再详细介绍了,毕竟,我们这一节的内容是presto中的ldaps

二.基于OpenSSL自建CA和颁发SSL证书

linux默认已经安装了openssl,因此我在这里假设已经安装好openssl

2.1 CA路径

在linux中默认的CA路径是/etc/pki/CA,关于该路径,我们可以在vi /etc/pki/tls/openssl.cnf中看到,如下图所示:

  默认安装的opnessl可能并没有其中的一些文件(夹),需要我们自己来创建。

2.2 匹配规则

在上面的文件中,我们要注意其中在[ policy_match ]中的设定的匹配规则,这里匹配规则与我们后面要生成的csr有关系。其实也就是在第一部分中讲到的-dname 选项中的各个条目。

在CA目录下创建两个文件:

touch index.txt serialecho 00 > serial

2.3 生成根密钥(来到/etc/pki/CA目录)

cd /etc/pki/CA/openssl genrsa -out private/cakey.pem 2048

2.4 生成根证书

使用req命令生成自签证书:  

openssl req \-new -x509 \-key private/cakey.pem -out cacert.pem

这里会输入一些内容,与我们上面使用keytool创建证书是输入的内容大致一样,这里我们同样只关注Common Name。

2.5 生成ssl密钥

接下来,就可以为dap服务器生成ssl密钥(这里生成的密钥可以在ldap服务器上,也可以在上面的CA服务器上。假设在上面的CA服务器上生成密钥,另外,在 /usrl/local/CA目录下生成ssl密钥)

cd /usrl/local/CAopenssl genrsa -out ldap.key

2.6 为ldap生成证书签署请求  

openssl req -new \-key ldap.key \-out ldap.csr

2.7 ca根据请求签发证书,得到.crt证书文件  

openssl x509 -req \-in ldap.csr \-CA /etc/pki/CA/cacert.pem \-CAkey /etc/pki/CA/private/cakey.pem \-CAcreateserial \-out ldap.crt

生成的证书为我们后面的ldap服务器的搭建做前提准备。

三.ldaps服务器搭建(以linux为例)

3.1 安装ldap

yum install -y openldap*

3.2 ldap配置文件

新版Linux环境需要手动完成/usr/share/openldap-servers/slapd.conf.obsolete文件配置,以下是测试通过的slapd.conf.obsolete文件完整版本。

=================================================  include /etc/openldap/schema/corba.schema  include /etc/openldap/schema/core.schema  include /etc/openldap/schema/cosine.schema  include /etc/openldap/schema/duaconf.schema  include /etc/openldap/schema/dyngroup.schema  include /etc/openldap/schema/inetorgperson.schema  include /etc/openldap/schema/java.schema  include /etc/openldap/schema/misc.schema  include /etc/openldap/schema/nis.schema  include /etc/openldap/schema/openldap.schema  include /etc/openldap/schema/ppolicy.schema  include /etc/openldap/schema/collective.schema  access to *    by self write    by anonymous auth    by * read  pidfile /var/run/openldap/slapd.pid  argsfile /var/run/openldap/slapd.args  database bdb  suffix "dc=fly,dc=com"  rootdn "cn=sky,dc=fly,dc=com"  TLSCACertificateFile /etc/pki/CA/cacert.pem  TLSCertificateFile /usrl/local/CA/ldap.crt  TLSCertificateKeyFile /usrl/local/CA/ldap.key  TLSVerifyClient never  # Cleartext passwords, especially for the rootdn, should  # be avoid. See slappasswd(8) and slapd.conf(5) for details.  # Use of strong authentication encouraged.  rootpw {SSHA}YgXdmGu8hrIE10JMEhkW6p2QBfPF+62J  # The database directory MUST exist prior to running slapd AND  # should only be accessible by the slapd and slap tools.  # Mode 700 recommended.  directory /var/lib/ldap  # Indices to maintain  index objectClass eq  =================================================

3.3 设置管理员密码

$. slappasswd

键入新密码后,会弹出生成的密码。我们将其粘到上面文件的rootpw后面,其间使用Tab键分隔。

3.4 修改slapd.conf 核心配置  

$. database bdb$. suffix "dc=fly,dc=com"$. rootdn "cn=sky,dc=fly,dc=com"$. rootpw {SSHA}YgXdmGu8hrIE10JMEhkW6p2QBfPF+62J

3.5 修改slapd.conf 权限配置  

$. access to *$. by self write$. by anonymous auth$. by * read

3.6 添加ssl认证

$. TLSCACertificateFile /etc/pki/CA/cacert.pem$. TLSCertificateFile /usrl/local/CA/ldap.crt$. TLSCertificateKeyFile /usrl/local/CA/ldap.key$. TLSVerifyClient never

3.7 检测配置是否正确  

slaptest -u

3.8 配置数据库   

cp /usr/share/openldap-servers/DB_CONFIG.example \/var/lib/ldap/DB_CONFIG

3.9 删除默认内容   

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

3.10 启动ldap

/usr/sbin/slapd \-h 'ldaps://192.168.0.76:636/' \-f /etc/openldap/slapd.conf \-d 255

3.11 状态查看:  

systemctl status slapd.service

3.12 使用客户端验证

默认路径是: /etc/openldap/ldap.conf

需要在最后添加

  TLS_CACERT /etc/pki/CA/cacert.pem

验证ldaps服务器是否安装无误:

  ldapsearch -x -b "cn=sky,dc=fly,dc=com" -H ldaps://192.168.0.76:636

如果没有报异常,则ldaps服务安装成功。

四. presto-ldap插件启用

presto中如果启动了ssl认证,则同样要求启动ldaps认证。

对于启动ssl认证,需要在etc/config.properties这样配置:

另外,需要在etc/password-authenticator.properties文件配置:

  password-authenticator.name=ldap

  ldap.url=ldaps://192.168.0.76:636

  ldap.user-bind-pattern=cn=sky,dc=fly,dc=com

如果仅仅是上面的配置,还是不够,通常会报。因为我们并没有将ldaps的客户端证书添加到我们的presto相关文件中。

  其实一开始我以为是要将ldaps中的文件(/usrl/local/CA/ldap.key或/etc/pki/CA/cacert.pem皆可)导入到上面配置的/usr/local/keystores/for-presto/presto-private.keystore中。但一直报上面的错,后来我追踪了源码,发现就是使用jdk中的证书,所以,这里应该将其中的证书添加到jdk中,执行的操作是:

sudo keytool -delete \-alias ldap-remote-server \-keystore  /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts \-storepass changeit(更正为:sudo keytool -import \-file /etc/pki/CA/cacert.pem \-alias ldap-remote-server \-keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts \-storepass changeit) 

标签: #python ldapsearch #数据库设计环境配置说明 #ldap配置详解 #linux安装openssl不成功 #openssl安装 linux