active-directory - 连接到端口 636 时出现 LDAP 连接错误 ("The server is not operational.")

标签 active-directory ldap ldapconnection

我正在尝试使用端口 636 连接到 LDAP,但出现错误“服务器无法运行”,但是如果我尝试连接到端口 389,它会正常连接并获取数据

这是我正在使用的代码

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:636/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

有了这个,如果我尝试连接,我会收到错误“服务器无法运行”

但是如果我把代码改成这样

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:389/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

或者甚至删除端口(默认情况下我认为使用 389 端口)

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

然后正常连接并获取数据。

任何人都可以帮助我通过 636 端口连接 LDAP 因为在测试服务器环境中我需要通过 636 连接不能使用 389。

最佳答案

要使 LDAP over SSL 工作,需要发生三件事:

  1. 您需要网络连接(没有防火墙)。要对此进行测试,您可以使用 PowerShell 的 Test-NetConnection :
Test-NetConnection ldap.domain.com -Port 636
  1. 您需要信任证书。如果它使用的是自签名证书,那么它可能不受您下载它的计算机的信任。有一些 PowerShell 代码 here可以下载证书以便您可以检查它。我修改了它以便在这里使用(只需将 $domain 更改为实际域):
$domain = "ldap.domain.com"
$webRequest = [Net.WebRequest]::Create("https://$($domain):636")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "~\Downloads\$domain.cer"

这会将证书放入您的“下载”文件夹中。打开 .cer 文件,它会立即告诉您它是否在您的机器上受信任。如果没有,那么您将需要获取根证书并将其作为受信任的根证书安装在运行此代码的任何计算机上。

  1. 您用于连接到 AD 的完全限定域名必须与 SSL 证书完全匹配(或证书的“主题备用名称”之一)。有时,证书将以域 Controller 的名称(例如 dc1.domain.com)颁发,在这种情况下,您必须针对特定的 DC(“LDAP://dc1.domain.com:636” ) 而不仅仅是域名。

关于active-directory - 连接到端口 636 时出现 LDAP 连接错误 ("The server is not operational."),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987776/

相关文章:

powershell - 在多个组中使用 Get-ADGroup 和 Get-Groupmember

c# - 检查用户是否存在于ou中

node.js - 使用 MarkLogic Node API,我可以通过 LDAP 进行身份验证吗?

docker - 在Windows容器中安装Active Directory或Ldap服务器

c# - Microsoft Graph API 重定向成功,但 Request.Authentication=false

LDAP:错误代码 49 - 无法绑定(bind) principalDn

active-directory - 尝试使用 userPrincipalName 连接时出现 LDAPException

c# - 如何使用 Active Directory 从属性中检索值?

java - 如何通过 JNDI 更改 LDAP 密码