如何使用Powershell和PKI进行LDAP查询

时间:2014-06-11 11:56:13

标签: powershell ssl ldap pki ldap-query

我是Powershell的新手,我正在尝试使用PKI身份验证进行安全的LDAP查询。我对如何设置证书和密钥感到困惑。基于谷歌搜索/研究,我有一些基础知识,例如:

$connection = new-object System.DirectoryServices.Protocols.LDAPConnection('$domainName:$portNum')
[string[] $get] = "$attribute1", "$attribute2", "attribute3"
$request = new-object System.DirectoryServices.Protocol.SearchRequest("$targetOu", "$filter", "subtree", $get)
$response = new-object $connection.SendRequest($request)

就像我说的那样,我对如何设置/发送证书和密钥感到困惑。我以为我可以做$connection.ClientCertificates = $path,但该属性是只读的。我还以为我必须对$System.Net.NetworkCredential做一些事情,但我不确定证书和密钥是否真的与用户名和密码相对应。我提到了一个执行LDAP查询并使用PKI的Perl脚本,您可以这样做:

clientcert => '/path/to/cert.pem'
clientkey => '/path/to/key.pem'

Powershell的等价物是什么?我必须对System.Security.Cryptography.X509Certificates.X509Certificate做些什么吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

$connection.ClientCertificates.Add($cert)

$cert必须是X509Certificate类 并使用

从商店获取证书
$allPersonalCerts = @( Get-ChildItem -Path 'Cert:\CurrentUser\my' )

返回X509Certificate个对象(或X509Certificate2的数组,它是X509Certificate的子类

注意:在进行PowerShell编程时,您始终可以通过Google搜索C#或VB.net解决方案来搜索帮助。这是.Net和面向.net的语言的例子只是语法不同