我是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
做些什么吗?
任何帮助将不胜感激!
答案 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的语言的例子只是语法不同