Active directory 连接到端口636时出现LDAP连接错误(“服务器未运行”)

Active directory 连接到端口636时出现LDAP连接错误(“服务器未运行”),active-directory,ldap,ldapconnection,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); 如果我尝

我正在尝试使用端口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。

要通过SSL连接LDAP,需要三件事:

您需要网络连接,但不需要防火墙。要测试这一点,您可以使用PowerShell的: 您需要信任该证书。如果它使用的是自签名证书,则您下载该证书的计算机可能不信任它。有一些PowerShell代码可以下载证书,以便您可以检查它。我在这里修改了它,只需将$domain更改为实际域: 这将把证书放在你的下载文件夹中。打开.cer文件,它会立即告诉您该文件在您的计算机上是否受信任。如果没有,则需要获取根证书,并将其作为受信任的根证书安装在运行此代码的任何计算机上

您用于连接AD的完全限定域名必须与SSL证书完全匹配,或者与证书的主题备选名称之一完全匹配。有时,证书将以域控制器的名称颁发,例如dc1.domain.com,在这种情况下,您必须以特定的DC LDAP://dc1.domain.com:636为目标,而不仅仅是域名。
要使LDAP over SSL正常工作,需要做三件事:

您需要网络连接,但不需要防火墙。要测试这一点,您可以使用PowerShell的: 您需要信任该证书。如果它使用的是自签名证书,则您下载该证书的计算机可能不信任它。有一些PowerShell代码可以下载证书,以便您可以检查它。我在这里修改了它,只需将$domain更改为实际域: 这将把证书放在你的下载文件夹中。打开.cer文件,它会立即告诉您该文件在您的计算机上是否受信任。如果没有,则需要获取根证书,并将其作为受信任的根证书安装在运行此代码的任何计算机上

您用于连接AD的完全限定域名必须与SSL证书完全匹配,或者与证书的主题备选名称之一完全匹配。有时,证书将以域控制器的名称颁发,例如dc1.domain.com,在这种情况下,您必须以特定的DC LDAP://dc1.domain.com:636为目标,而不仅仅是域名。
非常感谢您的详细回答。。。。我在这方面有点新,所以请帮助我多一点。。。所以我下载了证书。。。当我点击它时,它说Windows没有足够的信息来验证这个证书。。那么这意味着什么呢?另外,请您详细说明一下,如果没有,那么您需要获取根证书,我可以从Ad服务器获取根证书?是的,它将位于您的Ad域控制器上。如果你不是广告管理员,那就去问他们。我从来没有从域控制器上取过它,我不是域管理员,但我想你只需要在它询问时取,你不需要私钥就可以了。@BernhardThalmayr不需要DirectoryEntry,不可以。您仍然使用LDAP://并只包含端口。@GabrielLuci我确实在受信任的根证书中导入了证书,但在尝试连接LDAP时仍然出现相同的错误,指定636端口。。。389在哪里工作…当您现在打开该.cer文件时,它是否将证书显示为受信任的?非常感谢您提供的详细答案。。。。我在这方面有点新,所以请帮助我多一点。。。所以我下载了证书。。。当我点击它时,它说Windows没有足够的信息来验证这个证书。。那么这意味着什么呢?另外,请您详细说明一下,如果没有,那么您需要获取根证书,我可以从Ad服务器获取根证书?是的,它将位于您的Ad域控制器上。如果你不是广告管理员,那就去问他们。我从来没有从域控制器上取过它,我不是域管理员,但我想你只需要在它询问时取,你不需要私钥就可以了。@BernhardThalmayr不需要DirectoryEntry,不可以。您仍然使用LDAP://并只包含端口。@GabrielLuci我确实在受信任的根证书中导入了证书,但在尝试连接LDAP时仍然出现相同的错误,指定636端口。。。389工作的地方…当您现在打开该.cer文件时,它是否将证书显示为受信任的?
Test-NetConnection ldap.domain.com -Port 636
$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"