代码之家  ›  专栏  ›  技术社区  ›  nlawalker

使用makecert设置密钥使用属性

  •  19
  • nlawalker  · 技术社区  · 15 年前

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

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

    我知道怎么设置了 增强 使用makecert的密钥用法属性,但不使用密钥用法。

    4 回复  |  直到 7 年前
        1
  •  -4
  •   Zé Carlos    15 年前

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

    请参阅此处的详细信息: http://msdn.microsoft.com/en-us/library/aa386968(VS.85).aspx

        2
  •  6
  •   kamranicus    9 年前

    虽然您无法使用 make cert制作自签名证书并设置增强型密钥使用参数,但我认为我可以为每个人省去尝试使用go down the path of using openssl to generate a cert on windows的麻烦。相反,您可以使用 certreq (如果您已经有了 makecert ,则可以使用它),并设置您自己的请求以设置所需的参数。

    例如,这将设置一个带有文件加密EKU(1.3.6.1.4.1.311.80.1)和密钥加密和数据加密的密钥用法的证书。

    创建一个新文件, mycert.inf :。

    [版本]
    signature=“$Windows NT$”
    
    [弦乐]
    szoid_enhanced_key_usage=“2.5.29.37”
    szoid_document_encryption=“1.3.6.1.4.1.311.80.1”
    
    [新请求]
    subject=“cn=me@example.com”主题
    machineKeyset=假
    键长=2048
    keyspec=在\密钥交换
    哈希算法=sha1
    可导出=真
    请求类型=证书
    
    key usage=“cert_key_encipherment_key_usage_cert_data_encipherment_key_usage”
    validityPeriod=“年”
    validityPeriodunits=“1000”
    
    [延伸]
    %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

    让每个人都有尝试使用OpenSSL在Windows上生成证书的麻烦。相反,您可以使用certreq(如果您已经马克克特)并设计您自己的请求来设置所需的参数。

    例如,这将设置一个带有文件加密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证书)并将其安装到计算机上当前的用户个人存储区。如果需要,可以从那里导出。

    我用这个来生成一个证书来加密PowerShellDSC,进行测试。

    Example cert

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

        3
  •  1
  •   Florian Haupt    7 年前

    可以使用PowerShell cmdlet添加数字签名、数据加密和密钥加密。 New-SelfSignedCertificate . 其中之一 新的自签名证书 参数是 KeyUsage 您可以在其中添加数字签名、数据加密和密钥加密。

    New-SelfSignedCertificate 在TechNet上描述( https://technet.microsoft.com/library/hh848633 )

    Sample:

    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"
    

    该示例包括客户端身份验证和服务器身份验证,并在我的下的当前用户存储中创建证书。

        4
  •  0
  •   VoteCoffee    10 年前

    makecert不允许您指定密钥用法,只允许扩展密钥用法。我认为您需要一个CA来创建一个更广泛的证书。

    您可以使用Ubuntu服务器设置自己的CA。 https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04