Linux服务器Ldap安装及ldaps配置完整流程
参考文章:presto中ldaps配置完整流程 - letsfly - 博客园无法以ldaps模式连接到openldap服务器-Java 学习之路
参考文章:presto中ldaps配置完整流程 - letsfly - 博客园
无法以ldaps模式连接到openldap服务器-Java 学习之路
一.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 serial
echo 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/CA
openssl 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)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)