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

Keytool:我可以使用证书请求配置文件在Keytool中定义CSR扩展名吗?(类似于openssl-config),openssl,keytool,Openssl,Keytool,我使用nCipher HSM来存储我的密钥,我想生成一个自定义CSR,带有自定义扩展名(备用名称、证书策略和名称约束) 我在FIPS模式下运行HSM,这意味着私钥不能离开HSM,必须由HSM直接创建。因此,我无法使用openssl生成CSR。(使用openSSL引擎可能实现这一点,但这似乎需要大量的工作) 使用带有自定义安全提供程序的KeyTool,我能够连接到HSM以管理HSM中的密钥。例如: keytool -list -v -keystore new_key_store_name.jks

我使用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
所以我的问题是:有没有办法告诉keytool添加这些扩展?可能使用类似的配置文件?(方案A) 或者有没有办法让openSSL使用HSM安全提供程序?(方案B)

我已经成功地使用Java代码在我的CSR和HSM中操纵ASN1,但这是一个非常乏味的练习。(方案C)


提前感谢各位。

似乎您可以使用
-ext
来完成这项工作。因此,请将以下内容添加到命令行:

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

etc..

谢谢你,我最终用java手工完成了这一切。如果我再调查一遍,我会给你回电的。
[...]
    ####################################################################
    [ 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"
-ext KeyUsage:critical="digitalSignature, keyEncipherment" \
-ext BasicConstraints:critical="ca:False" \

etc..