【问题标题】:How to add multiple key usages to a certificate when using Java keytool使用 Java keytool 时如何将多个密钥用法添加到证书
【发布时间】:2017-10-04 14:25:22
【问题描述】:
在使用 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 参数。
我做错了什么?
【问题讨论】:
标签:
java
x509certificate
keytool
【解决方案1】:
-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
这是一个人为的例子,但你明白了。