2017-10-26 68 views
10

Próbuję znaleźć hash SHA1 mojego sklepu klucza podpisu na MacOS Sierra stosując następujące COMAND:Mam problemy z uzyskaniem certyfikatu SHA1 z keytool

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

wynik wygląda jak poniżej:

Alias ​​name: androiddebugkey
Date of creation: Oct 25, 2017
Input Type: PrivateKeyEntry
Length of certificate chain: 1
Certificate [1]:
keytool error: 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) at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2846) at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2800) at 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 java.base/sun.security.tools.keytool.Main.printX509Cert(Main.java:3182) at java.base/sun.security.tools.keytool.Main.doPrintEntry(Main.java:1995) at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1212) at java.base/sun.security.tools.keytool.Main.run(Main.java:397) at java.base/sun.security.tools.keytool.Main.main(Main.java:390)

O ile widzę, że polecenie działa, to nie jest problem z plikiem ani hasłem, wydaje mi się, że jest błąd wewnętrzny w java, czy brakuje jakiegoś pakietu java? Używam Java SDK 9.0.1

+0

istnieją prostsze sposoby Aby to zrobić: https://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate – rafid059

+0

Dziękuję, poważnie, nie miałem pojęcia, co robić –

+0

Mam ten sam problem –

Odpowiedz

49

Znalazłem, że problem pochodzi z najnowszej wersji Keytool w JDK8.151 i JDK9. Domyślnie keytool używa domyślnego języka systemu i wydaje się, że nie działa on poprawnie w niektórych językach (w moim przypadku francuskim).

To wystarczyło, aby wymusić wyjście w języku angielskim za pomocą parametru -J-Duser.language=en

Więc spróbuj użyć tego wiersza poleceń zamiast:

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

Zobacz również moja odpowiedź tutaj: https://stackoverflow.com/a/47181882/5292951

+0

Ten sam problem i twoja odpowiedź sprawdziły się. Dziękuję Ci! – alan

+0

@ Gbaccetta, jesteś moim bohaterem! Mi to pasuje! –

+0

Cieszę się, że pomaga. Mam nadzieję, że naprawią to w następnych wydaniach, ponieważ w niektórych scenariuszach może to być błąd blokujący. – gbaccetta