DSC - 客户端错误 - 私钥无法获得
我有一个WMF5下的Windows 2012R2 DSC拉服务器和WMF5.1下的Windows 2008R2客户端。由于需要访问网络资源,凭证是由拉服务器编码到财政部和加密使用驻留在证书的证书:\ LOCALMACHINE \我DSC - 客户端错误 - 私钥无法获得
基于https://msdn.microsoft.com/en-us/powershell/dsc/securemof的关键是使用创建:
New-SelfsignedCertificateEx `
-Subject "CN=${ENV:ComputerName}.${ENV:UserDnsDomain}" `
-EKU 'Document Encryption' `
-KeyUsage 'KeyEncipherment, DataEncipherment' `
-SAN ${ENV:ComputerName}.${ENV:UserDnsDomain} `
-FriendlyName 'DSC Credential Encryption certificate' `
-Exportable `
-StoreLocation 'LocalMachine' `
-StoreName 'My' `
-KeyLength 2048 `
-ProviderName 'Microsoft Enhanced Cryptographic Provider v1.0' `
-AlgorithmName 'RSA' `
-SignatureAlgorithm 'SHA256' `
-NotBefore $effDate `
-NotAfter $expiryDate
我在证书导出这个证书,并将其导入到客户端计算机,也:\ LOCALMACHINE \我使用此命令
certutil -addstore My C:\DSC\DscPublicKey.cer
两台机器可以找到下面的代码
$Cert = Get-ChildItem -Path cert:\LocalMachine\My | Where-Object {
(
($_.Issuer -eq $IssuerCN) -and ($_.Subject -eq $IssuerCN)
)
}
Write-Host " Thumbprint : " $Cert.Thumbprint
的证书(与交互式管理员用户运行),我可以在MOF见到拉服务器,加密的凭据。加密似乎按预期工作。
在客户端,MOF处理日志显示MSFT_DSCMetaConfiguration的一个实例,该实例具有用于加密的匹配CertificateID,并且使用函数初始化LCM以提取正确的证书。
function Get-LocalEncryptionCertificateThumbprint
{
(dir Cert:\LocalMachine\my) | %{
# Verify the certificate is for Encryption and valid
If (($_.Issuer -eq $encryCertCN) -and ($_.Subject -eq $encryCertCN) )
{
return $_.Thumbprint
}
}
}
但是,Get-DSCConfigurationStatus显示故障状态。当我看着日志,我看到错误
Status = "Failure";
Error = "The private key could not be acquired.";
和我所有的流水线级最终从InDesiredState =假切换;为InDesiredState = True;(我假设DSC是这样做的,以避免永久尝试做某件事情,但它没有希望实现)。
此时我唯一的想法是,客户端的证书不在SYSTEM用户可以访问的位置 - 但我无法将其识别为原因。
如果Cert:\ LocalMachine \我的不是正确的位置 - 应该在哪里安装证书?
编辑:
证书在PULL服务器和出口并手动导入到目标节点的.CER文件上创建(现在 - 最终在AD进行处理)。我也尝试导出完整的PFX并将其导入到目标节点中,结果相同。
在这一点上,我怀疑的是,证书生成,是自签名的,是不够的目的......在一些假设
基地,您在拉服务器上创建的证书,包括公共和私人钥匙。然后只在目标节点上导入公钥(.cer
文件)。问题是拉服务器不是需要私钥的机器。目标节点需要私钥。这个过程应该看起来更像这样。
- 在配置的目标节点上创建证书,包括公钥和私钥。见Securing the MOF File - Creating the Certificate on the Target Node。
- 导出公钥
- 导入拉服务器
- 公开密钥编译拉服务器
- 不知何故,配置目标节点
本上运行的配置被认为是一个坏但如果你想拥有一个证书,过程将如下所示:
- 在Pull服务器上创建证书r,包括公钥和私钥。见Securing the MOF File - Creating the Certificate on the Target Node。
- 导出使用
Export-PfxCertificate
- 安全传输的关键目标节点(这通常是不牢固做,为什么它是一个不好的做法)
- 导入配置的目标节点上拉键会考
- 拉式服务器
- 不知何故,配置目标节点
我们的目标是有一个证书(最终由AD部署到约200台机器)。这就是为什么证书是在Pull服务器上生成的,并被部署到目标节点(尽管根据您的信息不正确)。 –
更新了答案... – TravisEz13
标记为答案,因为客户端正在看到证书 - 我现在正在解密失败,但这是一个不同的错误:) –
上运行,如果你创建目标节点上的证书,您可以更新的问题说上编译配置? 您生成证书的计算机上的客户端计算机上是否存在错误?客户端是指你将运行配置的目标节点吗? – TravisEz13