我有一个简单的PowerShell脚本,它使用匿名身份验证通过LDAPS绑定到非AD LDAP,并执行一个简单的查询。我的问题是,当绑定启动时,LDAP服务器提示我输入客户端证书,然后我得到一个选择证书对话框。如果我的智能卡在读卡器中,它希望使用我的客户端证书并要求输入PIN,如果我输入PIN,它实际上会失败,并显示LDAP服务器不可用消息。如果我把智能卡拿出来,我可以取消证书提示几次,绑定继续,我可以做查询。我想知道是否有一个会话选项,将允许我禁用证书提示。我已经和目录管理员谈过了,他们说LDAP服务器在使用SSL时被配置为证书认证,但它只是可选的。客户端应该处理是否使用证书认证。只是想知道是否有一种干净的方法来绕过PowerShell中的cert提示。
下面是我的简单代码:
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.Protocols")
[System.Reflection.Assembly]::LoadWithPartialName("System.Net")
$c = New-Object System.DirectoryServices.Protocols.LdapConnection "dir.mycompany.com:636"
#Set session options
$c.SessionOptions.SecureSocketLayer = $true;
$c.SessionOptions.ProtocolVersion = 3
$c.AuthType = [System.DirectoryServices.Protocols.AuthType]::Anonymous
$c.Bind();
$basedn = "ou=People,dc=mycompany,dc=com"
$filter = "(uid=testuser1)"
$scope = [System.DirectoryServices.Protocols.SearchScope]::Subtree
$attrlist = ,"employeeID"
$r = New-Object System.DirectoryServices.Protocols.SearchRequest -ArgumentList $basedn, $filter, $scope, $attrlist
$re = $c.SendRequest($r);
$re.Entries.count;
$re.Entries;
1条答案
按热度按时间7d7tgy0s1#
如果您需要编写代码来决定发送哪个客户端证书,
SessionOptions
的QueryClientCertificate
属性就在那里,它应该返回要使用的证书。我不知道这是否有效,但尝试返回
$null
: