ToB项目身份认证AD集成(二):一分钟搞定window server 2003部署AD域服务并支持ssl加密(多图保姆教程+证书脚本)

在ToB的应用开发中,往往需要集成AD域控实现身份认证,同时也算是近期工作的总结,之前已介绍了基础的AD、Ldap,本文主要介绍如何大家一个本地的测试环境。
相关系列:

  1. ToB项目身份认证AD集成(一):AD和ldap简介

  2.  ToB项目身份认证AD集成(二):window server 2003部署AD域服务

为避免信息泄露,图中很多位置会出现涂鸦遮盖,但都不影响理解。 

 

注意一分钟搞定指的是看完本文,你下载了脚本之后哈~

1 准备工作

1.1 window server主机/虚拟机

        一台windows server服务器或者虚拟机(下文以2003为例子),且包含了域服务。

        推荐找一下就绪的镜像或者快照,

 1.2 安装AD域服务

确保服务器管理出现AD DS选项,不然就需要在配置中添加功能并安装Active Directory域服务(见下图)

1.3 测试AD的ldap接口

选中AD域的一个服务器(本机),右键打开ldp客户端

首次打开会自动连接,可以看到授权成功(此时默认用的是非加密通道),Authenticated as xxx

 

到达这一步,恭喜你已经部署好AD域服务了,但这还不够,敏感操作是需要通过加密端口访问的,如果只是查询信息,到这里就可以了。

2 LDAPS

2.1 为什么需要ldaps

对于简单的操作,我们使用ldap就可以操作,例如成员、组织目录查询这种。

但是如果你尝试修改密码等操作,会报错‘Unwilling To Perform‘’’如下:

LDAPError [UnwillingToPerformError]: Unwilling To Performat messageCallback (D:\projects\cloudpcadmin\modules\ldap-ad\node_modules\ldapjs\lib\client\client.js:1267:45)at Parser.onMessage (D:\projects\cloudpcadmin\modules\ldap-ad\node_modules\ldapjs\lib\client\client.js:925:14)at Parser.emit (node:events:519:28)at Parser.emit (node:domain:488:12)at Parser.write (D:\projects\cloudpcadmin\modules\ldap-ad\node_modules\ldapjs\lib\messages\parser.js:135:8)at Socket.onData (D:\projects\cloudpcadmin\modules\ldap-ad\node_modules\ldapjs\lib\client\client.js:875:22)at Socket.emit (node:events:519:28)at Socket.emit (node:domain:488:12)at addChunk (node:internal/streams/readable:559:12)at readableAddChunkPushByteMode (node:internal/streams/readable:510:3) {lde_message: 'Unwilling To Perform',lde_dn: null
}

这是出于安全考虑的,文传输密码生成的数据是不安全的,被中间窃取后别人就可以直接拿来用

所以,想要实现密码修改等功能,就必须支持ldaps

2.3 测试是否已支持ldaps

同样使用之前的ldp.exe, 选择连接-断开连接-连接,端口号改为636(ldaps),选中ssl

点击确定,可看到无法连接提示,出现了报错。

说明设备并未支持支持ssl连接,

如果成功,说明这个镜像已经支持,就可以跳过后续操作啦

3 一键生成证书并部署

3.1 证书生成脚本

运行下面的脚本,制作一个FQDN的证书,用于ssl连接同时配置好相关的参数并重启,已经绑定了附件资源,欢迎下载(编辑时中文注释部分会出现乱码,这个脚本是claude多次修改和我调整部分内容后经过反复测试的)

# addcert.ps1
# 创建新证书并将其设置为 NTDS 参数的 PowerShell 脚本
$serverFQDN = "$env:COMPUTERNAME.$env:USERDNSDOMAIN"
$cert = New-SelfSignedCertificate -DnsName $serverFQDN -CertStoreLocation "Cert:\LocalMachine\My" -KeyUsage KeyEncipherment,DigitalSignature -KeySpec KeyExchange -KeyLength 2048 -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(5)Write-Host "Created new certificate:"
$cert | Format-List Subject, Thumbprint, NotAfter# 设置 NTDS 参数
$ntdsParams = "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters"
Set-ItemProperty -Path $ntdsParams -Name "Certificate" -Value $cert.ThumbprintWrite-Host "Certificate thumbprint set in NTDS parameters: $($cert.Thumbprint)"# 重启 NTDS 服务
Restart-Service -Name NTDS -Force
Write-Host "NTDS service restarted"

补充说明下,这里面有个知识点 FQDN,注意如果自己签名,一定要留意下这部分,就是一个一个主机的最终标识域名,之前我也研究了挺久才搞懂的,类似java包名或者网站hostname一样的东西,保证这个主机在某个网络内标识唯一 

 3.2 等待NTDS重启

这里需要等一会儿,可能一分钟

在AD DS下面查看服务器服务状态,确保NTDS正常启动

3.3 部署证书(更改作用域)

因为是本机生成的自签名证书,想要全局服务生效,需要将证书复制到受信任区域,应该是为了防止其它程序自动生成证书(或许有更好的办法)

具体操作为:

3.3.1 按下win+R打开运行
3.3.2 输入 - certlm.msc 打开证书管理

打开个人证书,可看到生成的证书,并具备有身份验证目的

 

 3.3.3 复制生成的证书

3.3.4 在受信任的根证书颁发机构下的证书目录粘贴 

确保已经粘贴成功

 4 测试ssl连接

4.1 参考2.3 使用ldp.exe

修改端口和勾选ssl后点击确认,可看到不再失败,而是显示了支持信息 

 

向上滚动可看到连接成功,获取到了目录数据(Established connection to )

4.2 它机ssl测试

在别的电脑测试下证书是否生效,可参考SSL证书安装、配置和问题定位指南_- ssl certificate cannot be trusted-CSDN博客

使用openssl s_client指令(注意先安装openssl,没有的就下载安装下)

5. 总结

看完你会发现操作很简单,只有两步:运行脚本生成证书;手动复制下证书。可能一分钟就搞定了。

但是到昨天下午为止,捣鼓这个环境,也是试了不少东西,花费了差不多三四天的时间,虽然不全在做这个,但大部分时间是。归根结底一个是网络上的指导都很零散,也似乎缺少ad+ldaps的内容。另一个就是自己基础不扎实,如何测试证书生效都是先学的,之前也就部署过nginx证书等,这次不得不深入研究下了握手过程等。

突然才意识到,我们的桌面是有屏幕水印的,可怕,幸亏之前没怎么截大图,但这次的操作比较复杂,不截图可能不好说明,幸亏发现的早,有一部分图还重新返工了。 

昨日工作总结结束,后续我将介绍nodejs如何对接AD域,敬请期待~

2cy

YU.H

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544257.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】-- 类和对象(1)

文章目录 1. 面向对象的初步认知1.1 什么是面向对象1.2 面向对象与面向过程 2. 类的定义和使用2.1 简单认识类2.2 类的定义格式 3. 类的实例化3.1 什么是实例化3.2 类和对象的说明 4. this引用4.1 为什么要有this引用4.2 什么是this引用4.3 this引用的特性 5. 对象的构造及初始…

增强GPT4v的Grounding能力,video-level

开源链接: appletea233/AL-Ref-SAM2: AL-Ref-SAM 2: Unleashing the Temporal-Spatial Reasoning Capacity of GPT for Training-Free Audio and Language Referenced Video Object Segmentation (github.com) In this project, we propose an Audio-Language-Refe…

Spring Boot中实现一个递归获取省市区行政区划代码

Spring Boot中实现一个递归获取省市区行政区划代码 写于20240924 10:23 在Spring Boot中实现一个递归获取省市区行政区划代码的功能,可以按照以下步骤进行。我们将使用Spring Data JPA来与数据库交互,并构建一个递归的方法来获取层级数据。 首先这里数据…

11周年 | 初心不改,焕新前行,奔赴下一个10年!

2024年8月13日,爱加密正式迎来了11岁生日,在爱加密肩负着崇高使命踏浪而行的10年间,蓝绿色的品牌标识一直伴于左右。随着时代的变迁以及市场需求的不断变化,企业同样也需要在品牌上做出创新递进,从而更加适应市场竞争的…

数据科学的秘密武器:defaultdict——Python字典的自动化填充神器,让数据结构更灵活

目录 什么是defaultdict 引入动机 创建与初始化 工作原理 自定义默认值函数 注意事项 使用案例 使用场景 1: 计数 使用场景 2: 分组数据 使用场景 3: 嵌套字典结构 进阶案例使用 进阶案例 1: 使用 defaultdict 实现词频统计并排序 进阶案例 2: 使用 defaultdict 实…

OpenCSG推出StarShip SecScan:AI驱动的软件安全革新

OpenCSG 导读 如今,IT 技术迅速发展,软件安全不仅是企业稳健运营的基础,更是整个社会经济体系安全的保障。加强软件安全,尤其是在开发阶段识别和修补漏洞,是企业必须重视的问题。国际数据公司(IDC&#xf…

MyBatis 入门教程-搭建入门工程

Maven作为一个优秀的项目构建和管理工具,在日常的开发中被大多数开发者使用,后续的项目也是基于Maven来构建。 创建一个Maven项目 利用IDEA创建项目工具来创建一个Maven项目 添加MyBatis的依赖 这里可以从Maven仓库地址中进行查看, https://mvnrepository.com/ 从这里可…

反汇编—switch

x64和x86分析类似 标号1的位置要计算出:减去(debug) / 加上(release)第一个case要等于0,因为第一个case在跳转表数组的0下标位置 通过1和2,可以知道它们应该是连续case,还要判断是否缺项,进入跳转表看 可以看到原本应…

经济型伺服电缸EMB系列

经济型伺服电缸系列特点 小型电缸,推力范围:5kg-1500kg 精巧设计 所有部件模块化组合,标准化,经济化 轧制滚珠丝杠,高效率,高速度 匹配经济型步进伺服电机驱动器一体化,可总线 can,erthercat等&…

NAS求变,“0成本、低门槛”的鲁大师能否脱颖而出?

互联网科技的高速发展,推动了全球信息爆炸的进程。如何高效地存储和使用这些海量数据成了困扰企业、乃至个人的一大难题。从U盘、到移动硬盘、再到各种网云盘、以及愈发大众化的NAS……存储解决方案也随着个人及家庭数据存储需求的不断增长而发展着。如今&#xff0…

shardingjdbc-读写分离配置

文章目录 1、application.yml2、shardingsphere.yaml3、创建实体类 User4、创建 UserMapper5、添加依赖6、读写分离测试7、事务测试 我们的主从复制已经提前搭建好: mysql-搭建主从复制:https://blog.csdn.net/m0_65152767/article/details/142214434 1…

AI最大的应用是什么,如何成为初代AGI产品经理?

❝ 在当今这个由数据驱动的时代,AI技术正以前所未有的速度发展,它不仅改变了我们与数字世界的互动方式,更在物理世界中掀起了一场革命。阿里巴巴集团CEO吴泳铭在2024云栖大会上的演讲,为我们描绘了AI技术未来的巨大潜力。他指出&a…

华为云长江鲲鹏深度赋能,大势智慧稳居“实景三维+AI”领域排头兵

本文转自长江日报大武汉客户端 走出象牙塔第10年,武汉大势智慧科技有限公司(以下简称“大势智慧”)已成长为国内三维技术创新及应用领域龙头企业,其自主研发的“重建大师”等三维测绘软件系统在各级测绘系统占有率达到87.5%。 这…

奇迹再现!帕金森患者6年后停药,竟能自如行走:背后的故事与启示

在医学的浩瀚星空中,总有一些故事如同璀璨星辰,照亮着患者与家属的希望之路。今天,我们要讲述的,就是一位与帕金森病抗争了6年之久的患者,如何在看似不可能的境遇下,实现了停药后自如行走的奇迹。这不仅是对…

前端——元素类型+文字样式

一、元素类型 1. 块级元素 >块级标签: div p h1~h6 ul ol li dl dt dd hr br等 还有表格标签 table 特征: 1.独占一行 不会共享一行的位置 2.不设置宽度 默认是继承父级宽度 100% 结构上没有父级那就是浏览器 3.高度不设置 默认由内容撑开 4.可…

mock虚拟接口技术

一、什么是mock mock指的就是使用mock创建出来的一个虚拟的接口 二、对于测试人员而言,我们为什么要使用mock 当我们进行接口测试时,如果对应的接口还没有开发好,但是我们又需要用到这个接口响应的信息,这个时候我们就可以使用…

学习threejs,绘制二维线

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀绘制二维线1. ☘️…

筛子排序(SieveSort)

当你手头有了支持AVX-512(SIMD)的i9-11900K,你最想做什么? i9-11900K?现在都14代了,谁还用11代的? 但12代以上就没有AVX-512了! AVX-512有什么特别之处?有了这个硬件支…

Redis 的 Java 客户端有哪些?官方推荐哪个?

Redis 官网展示的 Java 客户端如下图所示,其中官方推荐的是标星的3个:Jedis、Redisson 和 lettuce。 Redis 的 Java 客户端中,Jedis、Lettuce 和 Redisson 是最常用的三种。以下是它们的详细比较: Jedis: 线程安全&…

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…