是否可以使用makecert或我可用于生成自己的测试证书的任何其他工具来设置密钥用法属性?
我感兴趣的原因是用于BizTalk Server AS2传输的证书需要使用数字签名的密钥用于签名和数据加密或密钥加密以进行加密/解密,我想要使用此功能。
我看到如何使用makecert设置增强密钥使用属性,但不是密钥用法。
答案 0 :(得分:6)
虽然您无法使用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 = "cn=me@example.com"
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的证书,以便进行测试。
有关详情:https://technet.microsoft.com/en-us/library/dn296456.aspx#BKMK_New
答案 1 :(得分:1)
可以使用PowerShell Cmdlet New-SelfSignedCertificate
添加数字签名,数据加密和密钥加密。其中一个New-SelfSignedCertificate
参数是KeyUsage
,您可以在其中添加DigitalSignature,DataEncipherment和KeyEncipherment。
https://technet.microsoft.com/library/hh848633
样品:
New-SelfSignedCertificate -Type Custom -Subject "CN=sample.com" -KeyUsage DataEncipherment, KeyEncipherment, DigitalSignature -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.1") -CertStoreLocation "Cert:\CurrentUser\My"
该示例涵盖客户端身份验证和服务器身份验证,并在我的。
下的当前用户存储中创建证书答案 2 :(得分:0)
MakeCert不允许您指定密钥用法,只允许扩展密钥用法。我认为你需要一个CA来创建一个更广泛的证书。
您可以使用ubuntu服务器设置自己的CA. https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
答案 3 :(得分:-4)
您可以使用-eku选项指定证书的密钥用法。
详情请见: http://msdn.microsoft.com/en-us/library/aa386968(VS.85).aspx