加密证书必须包含数据加密或密钥加密。

3
升级到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证书存储中。

根据certreq工具的文档,我尝试向我的证书请求文件添加以下内容,但仍然出现相同的错误提示。

KeyUsage = 0x30
[Strings]
szOID_ENHANCED_KEY_USAGE = "1.3.6.1.4.1.311.80.1"

KeyUsage 设置为 0x30 可以启用密钥加密和数据加密。但是我似乎找不到生成的证书中关于增强型密钥用途的详细信息。也许我在请求中设置了错误的值。

请帮忙确认一下。

2个回答

5

我喜欢你编写的纯PowerShell版本,而不是依赖于certreq - Cobster

3
我发现 Keith Hill 的博客文章 PowerShell V5 新功能:Protect/Unprotect-CmsMessage,虽然与此问题不直接相关,但它展示了如何定义包含文档加密密钥用途的证书请求文件。
现在,我使用以下请求inf生成自签名证书:
[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%"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接