首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-04-24 20:01
  • 3310
  • 9375
blog.csdn.net

在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‘’’如下:

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

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

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

2.3 测试是否已支持ldaps

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

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

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

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

3 一键生成证书并部署

3.1 证书生成脚本

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

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

注:本文转载自blog.csdn.net的余生H的文章"https://blog.csdn.net/m0_38015699/article/details/142453928"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top