2014-06-11 29 views
3

我是Powershell的新手,我试图使用PKI身份验证来执行安全的LDAP查询。我遇到了如何设置证书和密钥的问题。基于谷歌搜索/研究,我有一些基础知识,例如:如何使用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做些事情,但我不确定证书和密钥实际上是否与用户名和密码相对应。我提到一个Perl脚本,做了一个LDAP查询和使用PKI,你可以这样做:

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

什么是对PowerShell中的相同呢?我需要用System.Security.Cryptography.X509Certificates.X509Certificate做点什么吗?

任何帮助,将不胜感激!

回答

1
$connection.ClientCertificates.Add($cert) 

$cert必须是 X509Certificate类和使用

$allPersonalCerts = @(Get-ChildItem -Path 'Cert:\CurrentUser\my') 

它返回X509Certificate对象的阵列(或X509Certificate2这是X509Certificate子类)

NB获取从存储证书:当使用PowerShell编程,您可以随时通过搜索C#或VB.net解决方案来搜索帮助。这是.Net和.net面向语言的示例仅在语法上有所不同