2013-10-03 22 views
1

我得到下面的錯誤 -密鑰工具錯誤:java.lang.IllegalArgumentException異常:公鑰' s不是X.509,但X509

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更新40後,發現此錯誤。

+0

您確定您使用的keytool是來自1.7 JDK而不是舊版本的keytool嗎? – Nodebody

回答

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()); 
+  } 

看來,無論是默認的公鑰格式不正確,或等號檢查應該更新以檢查「X509」。

0

我們在更改默認安全提供程序時遇到了這些問題。 在\ lib \ security \ java.security中查看提供商列表

0

這是舊帖子,但只是爲了防止其他人絆倒它。在我的情況下,問題是由JAVA_HOME系統變量引起的,它指向在系統路徑中設置的不同目錄/ JDK安裝。除非您已經涉足java.security文件,否則請檢查您的JAVA_HOME系統變量,並確認您的PATH系統變量未指向任何其他JDK安裝。在我的情況是這樣的。當我修復PATH變量時,問題就消失了。