2010-06-02 70 views
18

是否可以使用makecert或其他可用于生成我自己的测试证书的工具来设置密钥使用属性?使用Makecert设置密钥使用属性

我感兴趣的原因是用于BizTalk Server AS2传输的证书需要数字签名的密钥用于签名和加密/解密的数据加密或密钥加密,我想要使用此功能。

我看到如何设置增强关键使用属性与makecert,但没有关键用法。

+0

我认为你正在寻找'-sky'选项 – AaA 2017-08-24 09:14:25

回答

-4

您可以使用-eku选项指定证书的密钥使用情况。

查看详情这里: http://msdn.microsoft.com/en-us/library/aa386968(VS.85).aspx

+3

-eku允许您设置*扩展*键用法,而不是密钥用法。 – nlawalker 2010-06-09 20:55:08

+1

哼,我明白了......在这种情况下,我建议你尝试使用Openssl来生成你的证书。我不知道使用openssl的具体问题的答案,但它是一个强大的工具(在我看来比makecert更好)。我建议你在你的问题中加上“openssl”标志,并把标题改为“makecert/Openssl”。也许这样你会得到更有帮助的答案。使用'makecert'来确认 – 2010-06-10 11:41:58

5

虽然您无法创建自签名证书并使用makecert设置增强型密钥使用参数,但我认为可以节省每个人尝试使用OpenSSL在Windows上生成证书的麻烦。相反,您可以使用certreq(如果您已有makecert,则可以使用该选项),并且可以根据您自己的要求设置所需的参数。

例如,它设置了一个带有文档加密EKU(1.3.6.1.4.1.311.80.1)和密钥加密和数据加密的密钥的证书。

创建一个新的文件,MyCert.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 = "[email protected]" 
MachineKeySet = false 
KeyLength = 2048 
KeySpec = AT_KEYEXCHANGE 
HashAlgorithm = Sha1 
Exportable = true 
RequestType = Cert 

KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DATA_ENCIPHERMENT_KEY_USAGE" 
ValidityPeriod = "Years" 
ValidityPeriodUnits = "1000" 

[Extensions] 
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%" 

正好被设置为任何你需要的Subject

然后运行:

certreq -new MyCert.inf MyCert.cer 

这将生成公钥(X509证书),并在计算机上安装到您的当前用户的个人商店。如果需要,您可以从那里导出它。

我用它来生成一个用于加密PowerShell DSC的证书,用于测试。

Example cert

有关详细信息:https://technet.microsoft.com/en-us/library/dn296456.aspx#BKMK_New

+0

,您可以使用'-eku'来设置扩展密钥的使用情况,但是我正在寻找一种方法来设置两个或更多的扩展密钥使用。 – AaA 2017-08-24 09:16:14