我正在尝试使用PowerShell DSC进行一些操作。我希望根据http://technet.microsoft.com/en-us/library/dn781430.aspx的说明加密传递的凭据,这一切似乎都能正常工作,直到我在目标节点上运行start-DscConfiguration并得到错误:
无法获取私钥。 + CategoryInfo:NotSpecified :( root / Microsoft / ... gurationManager:String)[],CimException + FullyQualifiedErrorId:MI RESULT 1 + PSComputerName:DmitriyDev
回去我检查了mof是否包含加密的凭据,meta.mof包含匹配的指纹等。
回到原始文章,我看到示例代码:
# Get the certificate that works for encryption function Get-LocalEncryptionCertificateThumbprint { (dir Cert:\LocalMachine\my) | %{ # Verify the certificate is for Encryption and valid if ($_.PrivateKey.KeyExchangeAlgorithm -and $_.Verify()) { return $_.Thumbprint } } }
当我使用此代码(在目标节点上)测试我的证书时,我看到证书的PrivateKey为空。我不确定证书是如何为空。尝试使用certutil和提到http://blogs.technet.com/b/vishalagarwal/archive/2010/03/30/verifying-the-private-key-property-for-a-certificate-in-the-store.aspx的技术的一些东西,似乎我确实有一个私钥,但是Powershell只看到它为空。
在目标节点上,我甚至手动导出公共私钥并重新导入它们,没有运气,如另一个dsc教程中所述。
我也尝试使用procmon来查看目标节点上的问题。我看到了wmiprvse进程并看到它以System(正如预期的那样)运行,并且我检查以确保私有密钥的权限允许系统(所有目标节点上)
所以我的问题是如何让我的私钥被DSC特别是目标节点上的LCM使用?或者我该如何更多地诊断问题?
答案 0 :(得分:0)
好吧,我不确定为什么这是有效的,但确实如此。使用计算机模板似乎工作。在工作方面,目标节点上的powershell可以从
中看到它的私钥dir cert:\ LocalMachine \ My | ? PrivateKey -ne $ null
一旦发生这一切,一切都按预期工作。长话短说不要使用工作站Auth模板,而是使用计算机模板。