2

我正在尝试将 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 仅将其视为 null。

在目标节点上,我什至手动导出了公共私钥并重新导入它们,没有另一个 dsc 教程中概述的运气。

我还尝试使用 procmon 来查看目标节点上的问题。我看到 wmiprvse 进程并看到它作为系统运行(如预期的那样),并且我检查以确保系统允许私钥的权限(全部在目标节点上)

所以我的问题是如何让我的私钥供 DSC 使用,特别是目标节点上的 LCM?或者我如何更多地诊断问题?

4

2 回答 2

1

使用 New-SelfSignedCertificate 创建我的证书时,我遇到了类似的错误。对于有类似问题的任何人,我怀疑问题与 New-SelfSignedCertificate 使用的存储提供程序有关(请参阅http://blogs.technet.com/b/vishalagarwal/archive/2010/03/30/verifying-the-private -key-property-for-a-certificate-in-the-store.aspx,其中讨论了 Microsoft 软件密钥存储提供程序和 .NET 类的问题)。technet上有一个 powershell 脚本可以创建自签名证书,并且默认使用不同的存储提供程序,这为我解决了这个问题。

于 2015-08-13T04:55:28.907 回答
0

好的,我不确定为什么会这样,但确实如此。使用计算机模板似乎工作。在工作方面,目标节点上的powershell可以从

目录证书:\LocalMachine\我的 | ? PrivateKey -ne $null

一旦发生这种情况,一切都会按预期进行。长话短说,不要使用工作站身份验证模板,而是使用计算机模板。

于 2014-11-17T02:15:40.763 回答