加密证书必须包含数据加密或密钥加密
Encryption certificates must contain Data Encipherment or Key Encipherment
升级到 Windows Management Framework 5.0 后,我在采购 DSC 配置时开始收到以下异常。
ConvertTo-MOFInstance : System.ArgumentException error processing property 'Password' OF TYPE 'MSFT_Credential': Certificate
'---HIDDEN-CERTIFICATE-THUMPRINT-VALUE---' cannot be used for encryption. Encryption certificates must contain the Data Encipherment or Key
Encipherment key usage, and include the Document Encryption Enhanced Key Usage (1.3.6.1.4.1.311.80.1).
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:303 char:13
+ ConvertTo-MOFInstance MSFT_Credential $newValue
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Write-Error], InvalidOperationException
每个节点上使用的证书是使用以下证书请求生成的自签名证书。
[NewRequest]
Subject = CN=[computer-name-here].dsc
KeyLength = 2048
MachineKeySet = true
RequestType = Cert
KeySpec = AT_KEYEXCHANGE
然后将此请求文件提供给 certreq
命令行实用程序以生成证书并将其加载到 cert:\LocalMachine\My
证书存储区。
我已经尝试将以下内容添加到我的证书请求文件中,基于 documentation for the certreq tool,但我仍然遇到同样的失败。
KeyUsage = 0x30
[Strings]
szOID_ENHANCED_KEY_USAGE = "1.3.6.1.4.1.311.80.1"
将KeyUsage
设置为0x30
同时启用密钥加密和数据加密。但是,我似乎无法在生成的证书中找到有关增强密钥用法的详细信息。也许我在请求中错误地设置了这个值。
请帮忙。
我找到了 Keith Hill 的博客 post PowerShell V5 New Feature: Protect/Unprotect-CmsMessage,它与这个问题没有直接关系,但它确实展示了如何定义包含文档加密密钥用法的证书请求文件.
我现在使用以下请求信息生成自签名证书:
[Version]
Signature = "$Windows NT$"
[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_DOCUMENT_ENCRYPTION = "1.3.6.1.4.1.311.80.1"
[NewRequest]
Subject = "CN=test.dsc"
KeyLength = 2048
MachineKeySet = true
RequestType = Cert
KeySpec = AT_KEYEXCHANGE
KeyUsage = CERT_KEY_ENCIPHERMENT_KEY_USAGE
[Extensions]
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%"
您也可以使用 New-SelfSignedCertificate cmdlet 生成自签名证书。我编写了这个模块,它将帮助生成 DSC https://github.com/nanalakshmanan/xDSCUtils
要求的证书
升级到 Windows Management Framework 5.0 后,我在采购 DSC 配置时开始收到以下异常。
ConvertTo-MOFInstance : System.ArgumentException error processing property 'Password' OF TYPE 'MSFT_Credential': Certificate
'---HIDDEN-CERTIFICATE-THUMPRINT-VALUE---' cannot be used for encryption. Encryption certificates must contain the Data Encipherment or Key
Encipherment key usage, and include the Document Encryption Enhanced Key Usage (1.3.6.1.4.1.311.80.1).
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:303 char:13
+ ConvertTo-MOFInstance MSFT_Credential $newValue
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Write-Error], InvalidOperationException
每个节点上使用的证书是使用以下证书请求生成的自签名证书。
[NewRequest]
Subject = CN=[computer-name-here].dsc
KeyLength = 2048
MachineKeySet = true
RequestType = Cert
KeySpec = AT_KEYEXCHANGE
然后将此请求文件提供给 certreq
命令行实用程序以生成证书并将其加载到 cert:\LocalMachine\My
证书存储区。
我已经尝试将以下内容添加到我的证书请求文件中,基于 documentation for the certreq tool,但我仍然遇到同样的失败。
KeyUsage = 0x30
[Strings]
szOID_ENHANCED_KEY_USAGE = "1.3.6.1.4.1.311.80.1"
将KeyUsage
设置为0x30
同时启用密钥加密和数据加密。但是,我似乎无法在生成的证书中找到有关增强密钥用法的详细信息。也许我在请求中错误地设置了这个值。
请帮忙。
我找到了 Keith Hill 的博客 post PowerShell V5 New Feature: Protect/Unprotect-CmsMessage,它与这个问题没有直接关系,但它确实展示了如何定义包含文档加密密钥用法的证书请求文件.
我现在使用以下请求信息生成自签名证书:
[Version]
Signature = "$Windows NT$"
[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_DOCUMENT_ENCRYPTION = "1.3.6.1.4.1.311.80.1"
[NewRequest]
Subject = "CN=test.dsc"
KeyLength = 2048
MachineKeySet = true
RequestType = Cert
KeySpec = AT_KEYEXCHANGE
KeyUsage = CERT_KEY_ENCIPHERMENT_KEY_USAGE
[Extensions]
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%"
您也可以使用 New-SelfSignedCertificate cmdlet 生成自签名证书。我编写了这个模块,它将帮助生成 DSC https://github.com/nanalakshmanan/xDSCUtils
要求的证书