我正在Windows 2012虚拟机上安装Active Directory轻型目录服务(AD LDS,又名ADAM)。 最后得到目录和同步处理的configuration后,我现在遇到了一个有趣的问题。 我已经在线研究了几个小时,我可以使用一些专家的build议。
当我使用“networking服务”帐户作为我的LDS实例的服务帐户时,我无法在SSL端口(我默认保留为636)上启动连接。 我们可以连接到389的非SSL端口。域服务帐户“ADLDSSRVC”也是如此。
当我使用我的个人域凭据作为服务帐户时,我们可以在非SSL端口上使用非SSL连接,在SSL端口上使用SSL连接。 在SSL连接上,我们可以通过代理绑定redirect使用AD DS帐户绑定到LDS。 我的域帐户在主机上具有本地pipe理员权限。
我需要使域服务帐户,“ADLDSSRVC”本地pipe理员? 如果我不能只给予我需要的权限,我的老板只想作为最后的手段。 更具体地说,我想知道,如果可能的话,服务帐户需要什么权限,以便我可以将SSL ldap连接到我的AD LDS实例。 Technet文章指出,ADLDS服务帐户需要创build,读取和修改对%ProgramFiles%\ Microsoft ADAM \ instancename \ data的访问,但是对于打开端口636来说,这似乎没有什么区别。
Blog.uvm.edu告诉您执行以下操作:打开“AD用户和计算机”工具,find安装实例的计算机对象。 给LDS服务帐户“创build所有子对象”到计算机对象。 我不是域pipe理员,所以我不能这样做。 这基本上是相同的,使服务帐户本地pipe理员?
在我看来,AD LDS服务无法访问设置LDAPS所需的证书,当您将AD LDS设置为使用无权使用本地计算机\个人证书存储的服务帐户时。
从Microsoft KB :
对于AD LDS,将证书放入与AD LDS实例对应的服务(而不是NTDS服务)的个人证书存储中。
所以使用MMC并添加证书pipe理单元。 select“服务帐户”作为证书存储区以查看并select安装在该计算机上的AD LDS服务。 您的SSL证书需要安装在那里。
基于Ryan Ries的回答,下面是我如何解决这个问题,而不是使“域\ adldssrvc”pipe理员帐户:
运行mmc并添加本地计算机的“证书”pipe理单元,打开证书存储区。

右键单击Certificates (Local Computer)\Personal\Certificates\然后selectAll Tasks\Manage Private Keys 。

这拉起了一个正常的权限屏幕。 只需添加适当的用户并完全控制这些私钥。

请记住在做这个改变后重置LDS服务! (SERVICES.MSC)
请参考这篇文章
我已经完成了先configuration企业CA,然后在此页面上使用指导
按以下顺序
发布支持服务器身份validation的证书
在这一步的第5点
“5.在”复制模板“对话框中,保留选定的默认选定Windows Server 2003 Enterprise,然后单击”确定“。
仔细select你的相关操作系统,教程说默认它,但我使用的是Windows Server 2012 R2,所以我select了一个我正在使用的。 select你的相关操作系统
导出LDAPS证书并导入以用于AD DS
为什么我需要通过SSL进行ADLDS连接?
因为我希望用户更改他/她的ADLDS密码,所以使用PrincipalContext的非SSL连接不允许我这样做。 所以现在我正在使用下面的代码,在全能的安拉的帮助和恩典之下,它像魅力一样工作。
PrincipalContext pc = new PrincipalContext( ContextType.ApplicationDirectory, "YourServerUrl:YourSSLPort", "CN=YourPartitionName,DC=partition,DC=com", ContextOptions.SimpleBind | ContextOptions.SecureSocketLayer, "FullDistinguisedNameOfUser", "PasswordOfUser"); bool IsUserValidated = pc.ValidateCredentials( "FullDistinguisedNameOfUser", "PasswordOfUser", ContextOptions.SimpleBind | ContextOptions.SecureSocketLayer); if (IsUserValidated) { UserPrincipal up = UserPrincipal.FindByIdentity( "FullDistinguisedNameOfUser", "PasswordOfUser"); up.ChangePassword("UserOldPassword", "UserNewPassword"); }