2017-10-04 111 views
1

我想在使用java密钥工具生成证书时将多个密钥用法添加到证书。它只提取最后列出的一个。如何在使用Java密钥工具时将多个密钥用法添加到证书

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参数。 我在做什么错?

回答

2

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

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

多个文本用于分别定义不同类型的扩展名。例如像这样:

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:[email protected] 
    -ext CRLDistributionPoints=URI:http://foo.bar.com/ca.crl 

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