web-dev-qa-db-fra.com

J'ai du mal à obtenir le certificat SHA1 avec keytool

J'essaie de trouver le hachage SHA1 de mon magasin de clés de signature sur macos sierra en utilisant la commande suivante:

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

Le résultat ressemble à ci-dessous:

Nom d'alias: androiddebugkey
Date de création: 25 octobre 2017
Type d'entrée: PrivateKeyEntry
Longueur de la chaîne de certificats: 1
Certificat [1]:
erreur 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) sur Java.base/Java.util.Formatter $ FormatSpecifier.printInteger (Formatter.Java:2846) sur Java.base/Java.util.Formatter $ FormatSpecifier.print (Formatter.Java:2800) sur Java.base/Java.util.Formatter.format (Formatter.Java:2581) sur Java.base/Java.util.Formatter.format (Formatter.Java:2517) sur Java.base/Java.lang.String.format ( String.Java:2747) sur Java.base/Sun.security.tools.keytool.Main.withWeak (Main.Java:3151) sur Java.base/Sun.security.tools.keytool.Main.printX509Cert (Main.Java: 3182) sur Java.base/Sun.security.tools.keytool.Main.doPrintEntry (Main.Java:1995) sur Java.base/Sun.security.tools.keytool.Main.doCommands (Main.Java:1212) sur Java .base/Sun.security.tools.keytool.Main.run (Main.Java:397) sur Java.base/Sun.security.tools.keytool.Main.main (Main.Java:390)

Pour autant que je puisse voir que la commande fonctionne, ce n'est pas un problème avec le fichier ni avec le mot de passe, il me semble une erreur interne en Java, manque-t-il un Java? I utilise Java SDK 9.0.1

18
Jeilson Araujo

J'ai trouvé que le problème venait de la dernière version de Keytool dans JDK8.151 et JDK9. Par défaut keytool utilise la langue par défaut du système et cela semble ne plus fonctionner correctement sur certaines langues (dans mon cas le français).

Il suffisait de forcer la sortie en anglais en utilisant le paramètre -J-Duser.language=en

Essayez donc d'utiliser cette ligne de commande à la place:

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

Voir aussi ma réponse ici: https://stackoverflow.com/a/47181882/5292951

97
gbaccetta