是否可以使用makecert或其他工具设置密钥用途属性以生成自己的测试证书?
我感兴趣的原因是,BizTalk Server AS2传输所使用的证书要求数字签名的密钥用途用于签名,数据加密或密钥加密的密钥用途用于加密/解密。我想尝试这个功能。
我知道如何使用makecert设置“增强”的密钥用途属性,但不知道如何设置密钥用途。
是否可以使用makecert或其他工具设置密钥用途属性以生成自己的测试证书?
我感兴趣的原因是,BizTalk Server AS2传输所使用的证书要求数字签名的密钥用途用于签名,数据加密或密钥加密的密钥用途用于加密/解密。我想尝试这个功能。
我知道如何使用makecert设置“增强”的密钥用途属性,但不知道如何设置密钥用途。
makecert
创建自签名证书并设置增强密钥用途参数,但我想为大家节省尝试在Windows上使用OpenSSL生成证书的麻烦。相反,您可以使用certreq
(如果您已经有makecert
),并制作自己的请求以设置所需的参数。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
更多详情请参考:https://technet.microsoft.com/zh-cn/library/dn296456.aspx#BKMK_New
makecert
命令,您可以使用 -eku
来设置扩展密钥用途,但我正在寻找一种设置两个或更多扩展密钥用途的方法。 - AaANew-SelfSignedCertificate
时出现的“指定的提供程序类型无效”错误。谢谢! - rsbarroNew-SelfSignedCertificate
添加数字签名、数据加密和密钥加密。其中一个New-SelfSignedCertificate
参数是KeyUsage
,您可以在其中添加DigitalSignature、DataEncipherment和KeyEncipherment。
New-SelfSignedCertificate在technet上有描述(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"
本示例涵盖了客户端认证(1.3.6.1.5.5.7.3.2)和服务器认证(1.3.6.1.5.5.7.3.1),并在当前用户存储库下创建名为my的证书。
示例中使用的对象标识符在RFC 3280第4.2.1.13节“扩展密钥用途”中提到。
-TextExtension
OID的数据加密至少有些牵强附会,并取决于平台。Microsoft Crypto 2文件系统的数据加密似乎是 1.3.6.1.4.1.311.10.3.4
。 - Reahreichttps://oidref.com/
来查找它们,并且在寻找离线文件加/解密的文件加密 OID 时遇到了困难。 - ReahreicMakeCert无法指定密钥用途,只能指定扩展密钥用途。我认为您需要使用CA创建更广泛的证书。
您可以在Ubuntu服务器上设置自己的CA。https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
您可以使用 -eku 选项来指定证书的密钥用途。
详细信息请参见: http://msdn.microsoft.com/en-us/library/aa386968(VS.85).aspx