Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用keytool设置用法属性_Java_Cryptography_Keytool - Fatal编程技术网

Java 如何使用keytool设置用法属性

Java 如何使用keytool设置用法属性,java,cryptography,keytool,Java,Cryptography,Keytool,当我查看java.security.cert中的X509certificate类时,它有一个方法,例如getExtendedKeyUsage()和getKeyUsage()。有没有办法使用keytool设置这些值?如果有,我从未见过它,我只是用JDK检查了一下(尽管可能性很小)。请注意,密钥使用应该是一个已签名的属性(以及关键扩展),因此更改它通常不起作用,因为它会破坏颁发CA的签名。它可以针对特定应用程序进行更改(和单独存储的属性,但这不是Java密钥存储中的函数,因为它与X509标准不兼容。

当我查看java.security.cert中的X509certificate类时,它有一个方法,例如
getExtendedKeyUsage()
getKeyUsage()
。有没有办法使用keytool设置这些值?

如果有,我从未见过它,我只是用JDK检查了一下(尽管可能性很小)。请注意,密钥使用应该是一个已签名的属性(以及关键扩展),因此更改它通常不起作用,因为它会破坏颁发CA的签名。它可以针对特定应用程序进行更改(和单独存储的属性,但这不是Java密钥存储中的函数,因为它与X509标准不兼容。

有一个新的
-ext
选项。检查
-ext
文档下的表,特别是
KU
EKU
选项

注意,您通常能够将Java7的
keytool
生成/处理的密钥库与其他版本的JRE(包括Java6)一起使用


当然,这只适用于您生成的证书请求(在这种情况下,您使用的CA可能会选择忽略或更改CSR的某些内容)或您颁发的证书(即您是CA的位置)。您将无法更改现有证书。

该选项似乎是keytool-ext EKU=codeSigning
但我个人还没有尝试过。

“签名属性(关键扩展)”。签名属性和关键扩展不是一回事。所有属性(以及X.509证书的全部内容)由颁发证书的CA签署。扩展是否重要是不同的:这是CA告诉证书使用者它必须理解此特定扩展的一种方式。@Bruno你当然是对的,更改为&,在发布时有点昏昏欲睡-我还假设作者试图更改现有的ce证书,我会问他,你是否试图更改当前证书的任何内容(我假设是这样),或者布鲁诺是否正确地猜测你也可以将其用于新证书?