Linux上通过SSL/TLS和start tls连接到LDAP服务器(附C++代码实现认证流程)

一,大致流程。


1.首先在Linux上搭建一个LDAP服务器 2.在LDAP服务器上安装CA证书,服务器证书,因为SSL/TLS,start tls都属于机密通信,需要客户端和服务器都存在一个相同的证书认证双方的身份。3.安装phpldapadmin工具,为我们提供一个可视化操作的LDAP服务器界面,让我们能够方便去管理用户,组织。4.通过TLS和start tls和连接到LDAP服务器。

2.提交了解,新手必看。首先你在执行下述安装LDAP搭建之前,创建一个新的ubuntu的作为你的服务器的载体。其次,你新建的这个ubuntu的IP地址就是你LDAP服务器的IP地址,默认服务器管理员账户名为admin。鬼知道我之前找IP地址和管理员账户在配置文件里面扒拉了多少时间。

二.搭建LDAP服务器

三.搭配CA证书,服务器证书

二,三两个步骤我就不写了,这两个文章在这位大佬里面的博客写得非常详细,直接粘贴复制这位大佬的命令就行了。然后我会解决大佬文章中出现的一个错误,应该是版本更迭原因。

大佬的文章做到"配置OpenLDAP以使用证书和密钥"这一步时,他在保存addcerts.ldif后直接执行了写入配置文件这条命令。

经过我多次测试,如果在执行这条命令前不执行重启Openldap服务:sudo service slapd force-reload这条命令的话,会报出ldap_modify: Other (e.g., implementation specific) error (80)这样的错误,当你保存addcerts.ldif这个文件之后,正确的执行命令应当是。

sudo service slapd force-reload

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f addcerts.ldif

sudo service slapd force-reload

修改配置文件,开启SSL\TLS和Start TLS认证

sudo vim /etc/default/slapd

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///" //手动开始服务器支持TLS和SSL,前提是你的证书和私钥全部安装完毕;ldapi表示开启Start TLS认证,ldaps表示开启SSL\TLS认证

sudo vim /etc/ldap/ldap.conf

在文件中添加下面两行数据

TLS_REQCERT try //表示强制开启client验证服务器的证书,如果改为allow,可以通过IP连接到服务器

TLS_CACERT /etc/ldap/ca_certs.pem //指定证书的位置

四,安装phpldapadmin工具(不需要可视化界面的可以直接跳到第五步,不影响连接到LDAP服务器)

搭载phpldapadmin,phpldapdamin,这是一个可视化的LDAP服务器操作页面,能够更好的管理LDAP服务器。

1.安装phpldapadmin工具包

bash 复制代码
sudo apt-get install -y phpldapadmin

2.安装成功之后检查对应的配置文件,红色为修改部分

sudo vim /etc/phpldapadmin/config.phphp //打开配置文件

$servers->setValue('server'. 'host', '127.0.0.1') //第三个参数修改为本地环回地址,一般都是这个

$servers->setValue('server'. 'base', array('dc=example,dc=com')) //填写域名,我的是example.com

$servers->setValue('login', 'bind_id', 'cn=ldap,dc=example,dc=com') //管理员名+域名 上诉步骤均没有指定管理员名,服务器的默认管理员名均为admin

保存退出

  1. 配置文件修改之后配置防火漆:防火墙放行Apache2

Ubuntu命令行执行以下3条命令

ufw allow "Apache"

ufw allow "Apache Full"

ufw allow "Apache Secure"

4 重启服务器

cpp 复制代码
sudo /etc/init.d/apache2 restart

5.将http:///phpldapadmin 替换为LDAP服务器的IP地址,将这个放到任意一个游览器中运行,点击左侧登录会出现以下画面进行登录

6.3.6 登录成功之后进入以下画面

五,连接到AD服务器

1.验证是否配置成功Strat TLS认证

这里的ldap://ldap.example.com 必须使用域名,不可以使用IP地址,因为client验证服务器的证书使用的是域名而不是IP地址,如果形式变为ldap://192.168.45.xxx 的形式,就不能连接到服务器。除非你将TLS_REQCERT try改为TLS_REQCERT allow(表示不强制开启client验证服务器的证书)。

ldapwhoami -H ldap://ldap.example.com -x -ZZ //-ZZ表示强制使用Strat TLS

如果成功,那么你将会看见

anonymous

如果失败,请检查以下

  1. /etc/ldap/ldap.conf中指定的证书路径是否正确TLS_CACERT /etc/ldap/ca_certs.pem

2.证书内容是否在复制过程中,多了空格,换行,建议直接复制文件

3.服务器的/etc/default/slapd文件中的SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"字段是否有ldapi:///内容,如果是该错误,修改完配置文件之后,重启服务sudo service slapd force-reload 。

4.如果以上3步全部正确,尝试在client的/etc/hosts加上反向域名解析:

sudo vim /etc/hosts

#添加方向域名解析

127.0.1.1 ldap.example.com ldap

127.0.0.1 localhost

192.168.45.147 ldap.example.com

2.远程客户端通过SSL\TLS连接到服务器

ldapwhoami -H ldaps://ldap.example.com -x

如果成功

anonymous

失败的话请查看Strat TLS中提到的错误检查,如果Strat TLS已经成功了,而你的SSL\TLS失败了,就只有/etc/default/slapd文件中的SLAPD_SERVICES字段没有添加ldaps:///

六,通过C++代码实现Strat TLS和SSL\TLS认证流程

......

相关推荐
Molesidy11 小时前
【Linux】基于busybox的根文件系统的完善
linux·服务器·嵌入式linux
张龙68712 小时前
Docker 镜像瘦身实战:从 1.2GB 到 128MB,我踩过的 7 个坑和一套可复制的方法论
运维·后端·docker
zero_703212 小时前
HCIP 课程文字版思维导图笔记
服务器·网络·php
外滩运维专家13 小时前
Nginx 上的通配符证书 90 天到期,续签这事我是这么搞的
运维
科技新资讯14 小时前
国内AI影视制作服务商哪家口碑好
运维·人工智能·devops
IT摆渡者15 小时前
ubuntu系统网络问题
linux·运维·ubuntu
kdxiaojie15 小时前
Linux 驱动研究 —— SDIO (1)
linux·运维·笔记·学习·sdio
ZzzZZzzzZZZzzzz…15 小时前
K8S实战:NFS+StorageClass+PV/PVC+Deployment
运维·云原生·容器·kubernetes·storageclass·linux运维·持久卷
BerrySen17815 小时前
一个 JDBC 参数引发的架构演进:Apache SeaTunnel 如何解决数据同步中的“定时 Flush”难题
运维·自动化·zabbix
杨_晨16 小时前
Linux查看本地环境变量的命令
linux·运维·服务器