我在使用keytool获取SHA1证书时遇到问题

时间:2017-10-26 15:43:42

标签: java android certificate keystore keytool

我试图使用以下命令在macos sierra上找到我的签名密钥库的SHA1哈希值:

keytool -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

结果如下所示:

  

别名:androiddebugkey
创建日期:2017年10月25日
  输入类型:PrivateKeyEntry
证书链长度:1
  证书[1]:
keytool错误:   java.util.IllegalFormatConversionException:d!= java.lang.String   java.util.IllegalFormatConversionException:d!= java.lang.String at   java.base / java.util.Formatter中$ FormatSpecifier.failConversion(Formatter.java:4331)     在   java.base / java.util.Formatter中$ FormatSpecifier.printInteger(Formatter.java:2846)     在   java.base / java.util.Formatter中$ FormatSpecifier.print(Formatter.java:2800)     在java.base / java.util.Formatter.format(Formatter.java:2581)at   java.base / java.util.Formatter.format(Formatter.java:2517)at   java.base / java.lang.String.format(String.java:2747)at   java.base / sun.security.tools.keytool.Main.withWeak(Main.java:3151)at at   java.base / sun.security.tools.keytool.Main.printX509Cert(Main.java:3182)     在   java.base / sun.security.tools.keytool.Main.doPrintEntry(Main.java:1995)     在   java.base / sun.security.tools.keytool.Main.doCommands(Main.java:1212)     在java.base / sun.security.tools.keytool.Main.run(Main.java:397)at   java.base / sun.security.tools.keytool.Main.main(Main.java:390)

据我所知,该命令正在运行,它不是文件的问题,也没有密码,在我看来java中的一个内部错误,是不是有些java包?我正在使用Java SDK 9.0.1

1 个答案:

答案 0 :(得分:94)

我发现问题来自JDK8.151JDK9中的最新版Keytool。默认情况下keytool使用系统默认语言,并且在某些语言上似乎不再正常工作(在我的例子中是法语)。

使用参数-J-Duser.language=en

强制输出英文就足够了

所以请尝试使用此命令行:

keytool -J-Duser.language=en -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

另见我的回答:https://stackoverflow.com/a/47181882/5292951