ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl

简介: 本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。

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

相关系列:

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

1 准备工作

1.1 window server主机/虚拟机

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

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

1.2 安装AD域服务

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


1.3 测试AD的ldap接口

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


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

image.gif 编辑

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

2 LDAPS

2.1 为什么需要ldaps

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

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

LDAPError [UnwillingToPerformError]: Unwilling To Perform
    at 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
}

image.gif

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

所以,想要实现密码修改等功能,就必须支持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.Thumbprint
Write-Host "Certificate thumbprint set in NTDS parameters: $($cert.Thumbprint)"
# 重启 NTDS 服务
Restart-Service -Name NTDS -Force
Write-Host "NTDS service restarted"

image.gif

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

3.2 等待NTDS重启

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


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


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

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

具体操作为:

3.3.1 按下win+R打开运行

3.3.2 输入 - certlm.msc 打开证书管理

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

image.gif 编辑

3.3.3 复制生成的证书


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

image.gif

确保已经粘贴成功

image.gif

4 测试ssl连接

4.1 参考2.3 使用ldp.exe

image.gif

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

image.gif

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

image.gif

4.2 它机ssl测试

在别的电脑测试下证书是否生效,可参考SSL证书安装、配置和问题定位指南


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

image.gif

5. 总结

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

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

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



相关文章
|
7月前
|
监控 前端开发 测试技术
如何实现前端工程化的持续集成和持续部署?
通过以上步骤,可以建立一套完整的前端工程化 CI/CD 流程,实现前端代码从开发、测试、构建到部署的全自动化,提高开发效率、保证代码质量,快速响应用户需求和市场变化。
|
2月前
|
弹性计算 机器人 应用服务中间件
一键部署开源Qwen3并集成到钉钉、企业微信
Qwen3系列模型现已正式发布并开源,包含8款“混合推理模型”,其中涵盖两款MoE模型(Qwen3-235B-A22B与Qwen3-30B-A3B)及六个Dense模型。阿里云计算巢已支持Qwen3-235B-A22B和Qwen3-32B的私有化部署,用户可通过计算巢轻松完成部署,并借助AppFlow集成至钉钉机器人或企业微信。文档详细介绍了从模型部署、创建应用到配置机器人的全流程,帮助用户快速实现智能助手的接入与使用。
一键部署开源Qwen3并集成到钉钉、企业微信
|
1月前
|
JSON 缓存 并行计算
NVIDIA 实现通义千问 Qwen3 的生产级应用集成和部署
阿里巴巴近期开源了通义千问Qwen3大语言模型(LLM),包含两款混合专家模型(MoE)235B-A22B与30B-A3B,以及六款稠密模型(Dense)从0.6B到32B不等。开发者可基于NVIDIA GPU使用TensorRT-LLM、Ollama、SGLang、vLLM等框架高效部署Qwen3系列模型,实现快速词元生成和生产级应用开发。
|
4月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
14天前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
64 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
2月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
628 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
7月前
|
JavaScript 前端开发
如何在项目中集成 Babel?
如何在项目中集成 Babel?
111 3
|
7月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
175 2
|
4月前
|
弹性计算 人工智能 应用服务中间件
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
一键部署开源DeepSeek并集成到企业微信
|
4月前
|
人工智能 自然语言处理 机器人
一键部署开源DeepSeek并集成到钉钉
DeepSeek发布了两款先进AI模型V3和R1,分别适用于对话AI、内容生成及推理任务。由于官方API流量限制,阿里云推出了私有化部署方案,无需编写代码即可完成部署,并通过计算巢AppFlow集成到钉钉等渠道。用户可独享资源,避免服务不可用问题。部署步骤包括选择机器资源、配置安全组、创建应用与连接流,最终发布应用版本,实现稳定高效的AI服务。
一键部署开源DeepSeek并集成到钉钉

相关产品

  • IoT设备身份认证