使用Java keytool

时间:2017-10-04 14:25:22

标签: java x509certificate keytool

我正在尝试使用java keytool生成证书时向证书添加多个关键用法。它只是拿起列出的最后一个。

keytool -genkeypair -keystore keystore.jks -validity 3650 -alias test 
        -keysize 2048 -keyalg RSA -storetype JKS 
        -ext KeyUsage=digitalSignature -ext KeyUsage=keyEncipherment 
         -ext KeyUsage=keyCertSign

文档说您可以多次使用-ext参数。 我做错了什么?

1 个答案:

答案 0 :(得分:5)

-ext可以多次给出,但不能用于相同类型的扩展。你想要的是

keytool -genkeypair -keystore keystore.jks -validity 3650 -alias test 
    -keysize 2048 -keyalg RSA -storetype JKS 
    -ext KeyUsage=digitalSignature,keyEncipherment,keyCertSign

多个-ext用于分别定义不同类型的扩展。例如:

keytool -genkeypair -keystore keystore.jks -validity 3650 -alias test
    -keysize 2048 -keyalg RSA -storetype JKS
    -ext KeyUsage=digitalSignature,keyEncipherment,keyCertSign
    -ext ExtendedKeyUsage=serverAuth,clientAuth
    -ext BasicConstraints=ca:true,PathLen:3
    -ext SubjectAlternativeName=DNS:foo.bar.com,EMAIL:foo@bar.com
    -ext CRLDistributionPoints=URI:http://foo.bar.com/ca.crl

这是一个人为的例子,但你明白了。