keytool错误:java.lang.IllegalArgumentException:publicKey不是X.509,而是X509

时间:2013-10-03 07:34:33

标签: java security

我收到以下错误 -

keytool error: java.lang.IllegalArgumentException: publicKey's is not X.509, but X509

尝试使用以下命令生成密钥库时 -

keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -validity 366 -storepass test -keypass password -dname 'cn=${env.HOSTNAME},ou=foo,o=bar,l=testCity,s=testState,c=testCoutry' -keystore

在我的Ubuntu盒子上将JDK升级到1.7 update 40后,我看到了这个错误。

3 个答案:

答案 0 :(得分:0)

我的团队在Windows上升级到1.7u45后遇到了同样的错误消息。当http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7109096被移植到JDK 7时引入了此错误消息。

代码更改的相关部分在CertAndKeyGen.java中:

+        // publicKey's format must be X.509 otherwise
+        // the whole CertGen part of this class is broken.
+        if (!"X.509".equalsIgnoreCase(publicKey.getFormat())) {
+            throw new IllegalArgumentException("publicKey's is not X.509, but "
+                    + publicKey.getFormat());
+        }

似乎默认的publicKey格式不正确,或者应该更新等号检查以检查“X509”。

答案 1 :(得分:0)

当我们更改默认安全提供程序时,我们会遇到此类问题。 请参阅\ lib \ security \ java.security

中的提供者列表

答案 2 :(得分:0)

这是一个老帖子,但只是把它放在这里以防万一其他人偶然发现它。在我的情况下,问题是由JAVA_HOME系统变量指向在系统路径中设置的不同目录/ JDK安装引起的。除非您涉及java.security文件,否则请检查您的JAVA_HOME系统变量,并验证您的PATH系统变量未指向任何其他JDK安装。就我而言。当我修复PATH变量时,问题就消失了。