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认证流程

......

相关推荐
.生产的驴31 分钟前
Docker 部署Nacos 单机部署 MYSQL数据持久化
android·运维·spring boot·sql·mysql·docker·容器
van叶~44 分钟前
Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)
linux·服务器
MXsoft6181 小时前
一体化运维监控管理平台:产品架构与功能解析
大数据·运维·数据库
洛祁枫1 小时前
centos7 升级openssl 与升级openssh 安装卸载 telnet-server
linux·服务器·安全·网络安全·centos
Canon_YK1 小时前
响应“一机两用”政策 落实政务外网安全
运维·网络·安全·web安全·网络安全
qq10916069812 小时前
Nginx SSL+tomcat,使用request.getScheme() 取到https协议
nginx·tomcat·ssl
陈煜的博客2 小时前
paddleOcr -Linux 下的 Conda 安装
linux·运维·conda
EasyCVR2 小时前
ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?
服务器·网络·数据库·人工智能·音视频·无人机
乐维_lwops3 小时前
网络安全:数字时代的守护盾
运维·网络
上理考研周导师3 小时前
【智能化仪表设计】化工仪表及自动化全套课件
运维·自动化