Keytool:我可以使用Cert请求配置文件在Keytool中定义CSR扩展吗? (类似于openssl-配置)

时间:2019-09-12 04:16:21

标签: openssl keytool

我使用nCipher HSM来存储我的秘密密钥,我想生成具有自定义扩展名(备用名称,证书策略和名称约束)的自定义CSR。

我正在FIPS模式下运行HSM,这意味着私钥不能离开HSM,而必须由HSM直接创建。因此,我无法使用openssl生成CSR。 (使用openSSL引擎可能会发生这种情况,但这似乎需要大量工作。)

使用KeyTool和自定义的安全提供程序,我能够连接到HSM来管理HSM中的密钥。例如:

keytool -list -v -keystore new_key_store_name.jks -storepass <mypassword> -storetype ncipher.sworld -providername nCipherKM

现在,我想使用类似的方法来创建一些自定义CSR。我正在使用此命令,它适用于“基本” CSR。

keytool -certreq -alias <myalias> -file csr.txt -sigalg SHA256withECDSA -keystore new_key_store_name.jks -storepass <mypassword> -storetype ncipher.sworld -providername nCipherKM

我无法执行的操作是向其添加扩展请求。在openssl中,我能够使用配置文件添加扩展请求,但是如上所述,我认为openssl不能使用此自定义安全提供程序。这是我用于测试的openssl conf摘录。

[...]
    ####################################################################
    [ server_req_extensions ]

    subjectKeyIdentifier = hash
    basicConstraints     = CA:FALSE
    extendedKeyUsage     = serverAuth,clientAuth
    keyUsage             = digitalSignature, keyEncipherment
    subjectAltName       = @alternate_names
    nsComment            = "OpenSSL Generated Certificate"
    certificatePolicies  =  2.23.146.1.2.1.2
    nameConstraints      = permitted;IP:192.168.0.0/255.255.0.0
    nameConstraints      = permitted;email:max.somedomain.com

    ####################################################################
    [ alternate_names ]

    otherName=1.1.2.1;UTF8:"random-name"

这是我的问题:有没有办法告诉keytool添加这些扩展名?也许使用类似的配置文件? (计划A) 还是有办法让OpenSSL使用HSM安全提供程序? (计划B)

我使用Java代码通过HSM在CSR中操纵ASN1取得了一些成功,但这是非常繁琐的练习。 (计划C)

先谢谢大家。

1 个答案:

答案 0 :(得分:0)

看来您可以使用-ext来做到这一点。因此,将它们添加到您的命令行中:

-ext KeyUsage:critical="digitalSignature, keyEncipherment" \
-ext BasicConstraints:critical="ca:False" \

etc..