我收到以下错误 -
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后,我看到了这个错误。
答案 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变量时,问题就消失了。