【问题标题】:The Parameter is Incorrect when trying to connect to AD using DirectoryEntry尝试使用 DirectoryEntry 连接到 AD 时参数不正确
【发布时间】:2017-05-23 19:17:16
【问题描述】:

我正在尝试使用 DirectoryEntry .NET 类连接到 AD。但我收到一个错误

参数不正确

尝试访问时

DirectoryEntry.NativeObject 

为了强制认证。

任何人都可以提出这个错误的原因,或者如何识别这里的问题吗?

代码sn-p:

Dim deRoot As New System.DirectoryServices.DirectoryEntry
deRoot = New DirectoryEntry("LDAP://SERVERNAME:PORT/DOMAINSTRING", "USER_NAME", "PASSWORD", AuthenticationTypes.SecureSocketsLayer)
Dim obj As Object = deRoot.NativeObject

执行第 3 行时会出现问题。

注意:这同样适用于许多 LDAP 服务器。需要知道这个服务器有什么不同或确定需要传递什么才能使这个工作。

问候

【问题讨论】:

  • 你是用636端口还是3269端口?即使使用它,我发现指定AuthenticationTypes.SecureSocketsLayer 也不是必须的。它弄清楚了。尝试删除它。
  • 请注意,New DirectoryEntry 实际上并没有建立连接。它会等到您实际对对象执行某些操作后,才会实际连接到 DC。这就是为什么你会在第 3 行得到错误。
  • 它最终是导致问题的证书。我们得到这个错误。 从远程服务器收到的证书不包含预期的名称。因此无法确定我们是否连接到正确的服务器。我们期望的服务器名称是 [servername]。 SSL 连接请求失败。附加的数据包含服务器证书但是当我们添加一个主机条目时,这工作正常。但问题是它是一个动态 IP,而且 IP 不断变化。使用DirectoryEntry 类时有没有办法绕过这个?
  • 我在某处读到LDAPConnection 类具有绕过此证书错误的能力,但在应用程序中实现这一点非常困难。或者有没有办法在网络服务器中进行一些更改,以便主机条目始终指向更新的动态 IP?
  • 我遇到过使用域名连接的情况,但证书有域控制器的全名。在这些情况下,我使用域控制器名称进行连接。你能做同样的事情吗?证书使用的是DC的名称而不是域名吗?

标签: .net active-directory ldap directoryentry


【解决方案1】:

由于某种原因它不喜欢你的证书。

第一步是检查证书。您可以使用来自 DigiCert 的实用程序:http://www.digicert.com/util

运行它并单击“工具”选项卡,然后单击“检查安装”。对于“服务器地址”,请输入您的域 DNS 名称,然后输入 636 作为端口。然后单击“查询服务器”。有两件事要寻找:

  1. 主题名称
  2. 证书是否可信

您必须使用证书上的“主题名称”才能连接到 AD。例如:

deRoot = New DirectoryEntry("LDAP://{SubjectName}:PORT/DOMAINSTRING", "USER_NAME", "PASSWORD", AuthenticationTypes.SecureSocketsLayer)

“主题名称”可能是您的域控制器之一的名称,例如 server1.domain.com。如果你可以使用它,那就太好了。如果您不能按原样使用它,那么您可以修改您的主机文件,以便“主题名称”中显示的任何域名都指向 IP。不理想,但它可能会起作用。

如果负载平衡器后面的每台服务器都提供不同的证书,则主机文件技巧将不起作用。如果发生这种情况,那你就不走运了。

此外,证书必须是可信的。例如,它可能是自签名的。在这种情况下,您必须在发出呼叫的机器上安装证书。

这方面的一个线索是,每次尝试时,您都会在来自“Schannel”的 Windows 系统事件日志中看到一条错误消息:

从远程服务器收到的证书是由一个 不受信任的证书颁发机构。因此,没有任何数据 可以验证证书中包含的内容。 TLS 连接 请求失败。附加数据包含服务器证书。

对此的解决方法取决于它实际上是自签名的,还是仅由您的计算机上不受信任的证书颁发机构签名。如果是这样的话,我可以帮忙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2021-05-08
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多