在Linux中,使用keytool导入证书时出现java.util.IllegalFormatConversionException错误。

15

我尝试创建一个用于在Tomcat中使用的密钥库,但是在使用keytool时出现错误“java.util.IllegalFormatConversionException:d!= java.lang.String”。这只发生在Linux(CentOS7)中,而不发生在Windows中。我是用以下命令创建的密钥库:

keytool -genkey -keyalg RSA -alias client -keystore testkeystore -storepass mypassword  -validity 3650

试图使用以下方式导入证书:

keytool -import -alias  arubaauth  -trustcacerts -keystore testkeystore -file root_autenticazione_ATe.cer

在Windows中,相同的命令和相同的证书没有显示任何错误。

出了什么问题?

提前致谢。


请查看我的更新答案。这在我的情况下解决了问题。 - gbaccetta
完成。这也解决了我的问题。谢谢。 - user2959635
1个回答

63

我认为问题出在Java 8.151和Java 9中包含的Keytool版本上。旧版本对我来说可以正常工作。尝试降低你的JDK环境版本。

编辑:进一步调查让我意识到最新的Java版本中的问题仅适用于某些语言。因此,通过添加参数-J-Duser.language=en强制将keytool的输出语言设置为英语即可解决问题。

可能Tomcat的默认语言与英语不同。尝试运行此命令:

keytool -J-Duser.language=en -import -alias  arubaauth  -trustcacerts -keystore testkeystore -file root_autenticazione_ATe.cer

1
你救了我的一天!我的问题出在语言上,我使用的是Java 8,当我强制使用英语时,SHA1密钥正常打印出来。 - Dimas Mendes
实际上,我认为问题在于输出中存在非ASCII字符。 - lgeorget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接