参考文章: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.schemainclude /etc/openldap/schema/core.schemainclude /etc/openldap/schema/cosine.schemainclude /etc/openldap/schema/duaconf.schemainclude /etc/openldap/schema/dyngroup.schemainclude /etc/openldap/schema/inetorgperson.schemainclude /etc/openldap/schema/java.schemainclude /etc/openldap/schema/misc.schemainclude /etc/openldap/schema/nis.schemainclude /etc/openldap/schema/openldap.schemainclude /etc/openldap/schema/ppolicy.schemainclude /etc/openldap/schema/collective.schemaaccess to *by self writeby anonymous authby * readpidfile /var/run/openldap/slapd.pidargsfile /var/run/openldap/slapd.argsdatabase bdbsuffix "dc=fly,dc=com"rootdn "cn=sky,dc=fly,dc=com"TLSCACertificateFile /etc/pki/CA/cacert.pemTLSCertificateFile /usrl/local/CA/ldap.crtTLSCertificateKeyFile /usrl/local/CA/ldap.keyTLSVerifyClient 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 maintainindex 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)

Linux服务器Ldap安装及ldaps配置完整流程相关推荐

  1. 在Linux服务器上安装MySQL并配置,远程连接

    MySQL是用的很多的关系型数据库.今天来分享一下安装,配置及其连接教程.这里以Debian服务器安装MySQL 8为例. 1,下载MySQL并解压上传 去下载页面下载linux版的mysql安装包. ...

  2. Linux服务器下安装配置Nginx的教程

    这篇文章主要介绍了Linux服务器下安装配置Nginx服务器的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 Nginx("engine x")是一款 ...

  3. windows配置gitlab秘钥并测试_你了解多少Linux系统GitLab安装与环境配置?

    Linux系统GitLab安装与环境配置 注意:虚拟机的内存至少2G以上 一. 从GitLab官网获取安装方法和步骤: https://about.gitlab.com/installation/#c ...

  4. drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明

    按照本说明,你就可以成功的在Debian 10(Buster) Linux服务器中安装好drupal 8.8.0版本,已亲测能稳定运行. 先决条件 在开始安装之前,对安装的最低要求是: 数据库服务器, ...

  5. 在linux服务器上安装Jenkins

    Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器上安装Jenkins. 一.获得一台linux服务器 要在linux下安装git,首先你得 ...

  6. Linux服务器傻瓜安装(图解下)(4)

    2.在Linux下利用TCPDump进行网络管理 对于网络管理员来说,要保证整个网络的正常运行,就必须随时了解网络中存在的异常流量.网络阻塞等现象.打个比方,一部电话的窃听装置,可以用来窃听双方通话的 ...

  7. Linux 环境下安装 GitLab 与配置

    什么是 GitLab? GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务. GitLab的功能特点 提供了管理,计划,创建,验证,打 ...

  8. 美国Linux服务器系统增强安全的配置

    美国Linux服务器系统可能出现的安全漏洞中,更多是由于不当的系统配置所造成的,用户们可以通过一些适当的安全配置来防止问题的发生.美国Linux服务器系统上运行的服务越多,不当配置的概率也就越高,那么 ...

  9. 一台服务器可以安装多个mysql数据库_在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式...

    (一)MySQL多实例概述 实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务 ...

最新文章

  1. 深入SpringBoot:自定义Endpoint
  2. Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装....
  3. 图像处理:给验证码图片做降噪处理及数据清洗
  4. 放大电路分析方法、图解法分析放大电路
  5. S03_CH03_AXI_DMA_OV7725摄像头采集系统
  6. 计算机文件右击怎么显示打开方式,怎么删除Win10文件右键菜单打开方式中已卸载程序选项?...
  7. dk 图解计算机科学pdf,DK英语:7套DK经典图解词典,再也不用死记硬背了!
  8. 通过c语言求得一个英文句子中的单词数量
  9. 3d打印打印头heating failure报错
  10. STM32F4系列单片机选型详解
  11. 阿里云服务器型号大全及机型如何选择(建议收藏)
  12. Java核心技术卷一 -第五章:装箱和拆箱
  13. 上顿号符号_在电脑上打标点符号,顿号怎样打出来?
  14. 西门子系列全套学习视频,免费领取!
  15. 百度测试开发实习生技术面总结笔记
  16. SoO of EBGP
  17. Mac不能拷贝文件到U盘?看这里就对了!
  18. 关于网页版伪春菜橘花shell的加载方法研究
  19. Pico neo3 全景视频 从零开始 开发记录
  20. Vue Cli4 使用高德地图定位 获取当前经纬度信息以及周边定位

热门文章

  1. JS:函数中的arguments
  2. 华为计算机单机pc游戏软件,华为应用市场pc端
  3. C/C++中的void 和 void *
  4. caffe中常用的层:全连接层Full Connection层
  5. 浙大版《C语言程序设计实验与习题指导(第4版)》题目集 实验2-3-2 计算摄氏温度
  6. Python3 浮点数精度问题
  7. PowerQuery(导入数据,行操作,列操作,提取与转换,删除重复项,删除错误)
  8. 2018.03.18 临汾市游记
  9. ShardingShpere分库分表5-ShardingSphere分布式事务详解
  10. telnet 遗失对主机的连接