Comment puis-je trouver et exécuter le keytool

201

Je lis un guide de développement des développeurs Facebook ici

Il dit que je dois utiliser keytool pour exporter la signature de mon application, telle que:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Je ne sais pas comment trouver le keytool pour l'exécuter. J'ai essayé d'ouvrir une invite de commande Windows et de coller la commande ci-dessus, mais cela n'a pas fonctionné.

Nguyen Minh Binh
la source
si vous utilisez un système basé sur Linux /usr/local/java/bin# ./keytoolsi vous exécutez Windowsfind the JDK install path and check bin folder
Elshan
J'ai trouvé cette réponse, vous pouvez l'utiliser pour résoudre le problème stackoverflow.com/a/57390582/13405428
ashraf alqaabera

Réponses:

197

J'ai trouvé une solution par moi-même comme citation ci-dessous. Ça fonctionne bien.

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias
> sociallisting -keystore "D:\keystore\SocialListing"  |
> "C:\cygwin\bin\openssl.exe" sha1 -binary | "C:\cygwin\bin\openssl.exe"
> base64
Nguyen Minh Binh
la source
6
Je l'ai trouvé ici: C: \ Program Files \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya
12
Ou C: \ Program Files \ Android \ Android Studio \ jre \ bin
SHAHM
Merci @SHAHM: super pour nous, les gens qui ne veulent pas télécharger explicitement Java AGAIN et être buggés chaque semaine pour passer à la dernière version.
Pete Alvin
124

Entrez-les simplement dans l'invite de commande Windows.

cd C:\Program Files\Java\jdk1.7.0_09\bin

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\userName\.android\debug.keystore" -list -v

Le mot de passe de base est android

Il vous sera présenté avec le MD5, SHA1et les SHA256clés; Choisissez celui dont vous avez besoin.

remix090378
la source
3
cela a fonctionné pour moi. Pour les clés de débogage, utilisez -alias androiddebugkey.
Broo
J'utilise pour la version de sortie ligne suivante: 1) cd C: \ Program Files \ Java \ jdk1.8.0_162 \ bin et suivant 2) keytool -list -v -keystore "C: \ AndroidProjects \ Project1 \ app \ myapp.keystore "
Andrew Grow
2
keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified.
Gustaf Liljegren
80

Pour obtenir le code de hachage de la clé Android, procédez comme suit (pour les applications Facebook)

  1. Téléchargez l'openssl pour Windows ici
  2. maintenant décompressez sur le lecteur c
  3. ouvrir l'invite cmd
  4. type cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. puis tapez seulement keytool -export -alias myAlias -keystore C:\Users\<your user name>\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. Terminé

Pour obtenir le code d'empreinte digitale du certificat (MD5), procédez comme suit

  1. allez dans - C: \ Program Files \ Java \ jdk1.6.0_26 \ bin
  2. dans le dossier bin, exécutez le jarsigner.exefichier
  3. ouvrir l'invite cmd
  4. type cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. puis tapez à nouveau sur cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. il demandera maintenant le mot de passe Keystore. La valeur par défaut est " android" tapez et entrez
  7. Terminé.
noelyahan
la source
Cela a fonctionné pour moi jusqu'à la dernière étape. Après avoir tapé "android", il crache des ordures ... je suppose qu'il n'utilise pas le bon encodage? Si j'entre quelque chose comme "bla", cela me dit que le mot de passe était incorrect. Donc, il sait que j'ai le mot de passe correct lorsque je tape "android"
ArtOfWarfare
J'ai trouvé que le problème était que j'avais laissé les drapeaux -list et -v
ArtOfWarfare
23

keytool fait partie du JDK.

Essayez de préfixer %{JAVA_HOME}\l'instruction exec ou c:\{path to jdk}\bin.

Robby Pond
la source
J'ai mis le fichier cer et le fichier truststore dans le même répertoire et utilisé cette commande:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale
13

Le KeyTool fait partie du JDK. Vous le trouverez, en supposant que vous ayez installé le JDK avec les paramètres par défaut, dans$JAVA_HOME/bin

Chris Cashwell
la source
9

Robby PondLa réponse peut être généralisée pour utiliser JAVA_HOMEla variable d'environnement et pour compenser également les blancs qui pourraient se produire dans le chemin (comme Program Files):

"%JAVA_HOME%\bin\keytool" -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Alexei
la source
4

keytool fait partie de jdk, il devrait être $ JAVA_HOME / bin / keytool

James.Xu
la source
4

Keytool fait partie du SDK Java. Vous devriez pouvoir le trouver dans votre répertoire Java SDK, par exemple C: \ Program Files \ Java \ jdk1.6.0_14 \ bin

2bard
la source
4

Sur la fenêtre cmd (besoin de s'exécuter en tant qu'administrateur),

cd %JAVA_HOME% 

ne fonctionne que si vous avez configuré votre variable d'environnement système JAVA_HOME. Pour configurer votre variable système pour votre chemin, vous pouvez le faire

setx %JAVA_HOME% C:\Java\jdk1.8.0_121\

Ensuite, vous pouvez taper

cd c:\Java\jdk1.8.0_121\bin

ou

cd %JAVA_HOME%\bin

Ensuite, exécutez toutes les commandes fournies par JAVA jdk, telles que

keytool -genkey -v -keystore myapp.keystore -alias myapp

Il vous suffit de répondre aux questions (équivalent à taper les valeurs sur la ligne cmd) après avoir appuyé sur Entrée! La clé serait générée

Feuille de Jenna
la source
4

J'ai trouvé cela sur un autre article, qui n'a pas reçu beaucoup de votes positifs, mais cela m'a été très utile. Alors va l'ajouter ici.

Android Studio apportera un keytool avec lui.

C:\Program Files\Android\Android Studio\jre\bin

Vous pouvez voir son article ci-dessous par Richar Heap, avec une référence utile. J'ai vu ça avant mais je l'ai oublié. https://stackoverflow.com/a/51524526/4446406

Gareth
la source
3

keytool se trouve dans le répertoire bin JDK ($ JAVA_HOME / bin). JAVA_HOME est votre répertoire d'installation JDK. Pour utiliser cette ligne de commande, vous devez également inclure $ JAVA_HOME / bin dans votre variable d'environnement PATH.

Roman Mazur
la source
3

Android: où exécuter la commande keytool sous Android

La commande Keytool peut être exécutée à l'invite de commande dos, si JRE a été défini dans votre variable classpath.

Par exemple, si vous souhaitez obtenir l'empreinte digitale MD5 du certificat de débogage SDK pour Android,

exécutez simplement la commande suivante ...

C:\Documents and Settings\user\.android>  keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

C:\Documents and Settings\user\.android>est le chemin qui contient le debug.keystorequi doit être certifié.

Pour plus d'informations, consultez la page http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint

Youdhveer
la source
3

En fonction de votre version d'Eclipse (j'utilise Kepler). Accédez à Windows> Préférences> Android> Build.

Vous trouverez le chemin de l'emplacement de votre keystore de débogage ainsi que l'empreinte digitale SHA1 (que vous pouvez simplement copier et utiliser)

GraSim
la source
2

KEYTOOL est dans le SDK JAVAC. Vous devez donc le trouver dans le répertoire qui contient javac

suba
la source
2

Si vous avez installé Visual Studio avec la prise en charge du développement Xamarin / mobile, vous aurez une installation java ici C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\, comme c'était mon cas.

Nieminen
la source
1

keytoolest livré avec le JDK. Si vous utilisez cygwin, c'est probablement déjà sur votre chemin. Sinon, vous pourriez fouiller dans le dossier bin de votre JDK.

Vous devrez probablement utiliser cygwin de toute façon pour que les tubes shell ( |) fonctionnent.

Matthew Willis
la source
Pouvez-vous me dire comment exécuter la commande ci-dessous? keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binaire | openssl base64
Nguyen Minh Binh
1
Oui je l'ai fait. et quand j'exécute la commande ci-dessus, le CMD dit: «openssl» n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.
Nguyen Minh Binh
Vous devrez probablement également installer le paquet openssl via le programme d'installation de cygwin.
Matthew Willis
1
J'ai déjà installé le package openssl. Le problème persiste :(
Nguyen Minh Binh
Pouvez-vous exécuter openssl seul? Quelles options voyez-vous lorsque vous tapez «ouvrir» et appuyez sur l'onglet?
Matthew Willis
1

Peu d'observations alors que j'obtenais le même problème (Windows). 1. Le tuyau Shell est important. 2. Si vous utilisez OpenSSL ou Cygwin, vous devez absolument l'installer. 3. keytool est livré avec JDK donc soit vous devez le pointer dans la commande, soit vous avez un cd vers le dossier JDK / bin (où réside l'exe) 4. Le keystore de débogage se trouve généralement dans ~ / .android / debug.keystore 5. Le mot de passe est «android», que vous le passiez ou le saisissiez lorsque vous y êtes invité. 6. Pour le nom d'alias, vous pouvez ouvrir (NE PAS SAUVEGARDER, simplement ouvrir et fermer) le fichier keystore avec n'importe quel éditeur et le lire. 7. LE PLUS IMPORTANT - Il y a une différence en spécifiant le chemin du keystore entre guillemets et sans. Je l'ai fait fonctionner en utilisant le chemin du keystore entre les guillemets. Comme le dit remix090378 et selon les instructions, cette commande a en effet fonctionné - cd C: \ Program Files \ Java \ jdk1.7.0_09 \ bin

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ userName.android \ debug.keystore" -list -v

Zeena
la source
0

Dans mon cas, j'avais déjà généré un fichier APK à l'aide de la commande ionic cordova build android --prodet j'avais besoin d'obtenir l'empreinte digitale SHA-1 pour le fichier APK déjà existant. Voici comment je l'ai obtenu en exécutant la commande suivante dans le répertoire App:

keytool -list -printcert -jarfile app-debug.apk

Donc, j'ai essentiellement exécuté la commande ci-dessus dans l'emplacement d'application suivant:

C:\myApp\platforms\android\app\build\outputs\apk\debug>keytool -list -printcert -jarfile app-debug.apk

Cela m'a donné l'empreinte digitale SHA1 comme: 7B:6B:AD:...

J'espère que cela aide quelqu'un!

Devner
la source
0

Étant donné que vous avez installé Java et de préférence un JDK dans votre système (répondant pour Windows parce que vous l'avez mentionné dans votre question), vous devriez avoir l'utilitaire keytool dans le bindossier de votre installation .

Si tel est le cas, vous pouvez ensuite ajouter ce dossier bin à la PATHvariable d'environnement de votre installation Windows.

La prochaine fois que vous ouvrirez un shell Windows et que vous tapez, keytoolvous pourrez exécuter l'utilitaire réel.

Christos Alexiou
la source
0

Vous pouvez également effectuer les opérations suivantes:

  • copiez le fichier bat ci-dessous dans n'importe quel dossier déjà présent dans votre PATHvariable d'environnement
  • puis utilisez simplement la keytoolcommande dans n'importe quel shell Windows

L'emplacement réel de keytool est défini dans le fichier bat. Si l'emplacement est erroné, le fichier bat analysera votre système pour détecter les emplacements potentiels dans les (sous) dossiers ProgramFiles.

Trouvez également keytool2.bat, un raccourci pratique pour "keytool -v -list -keystore", qui est largement utilisé pour vérifier rapidement le contenu d'un fichier jks.

keytool.bat:


:: 
:: 
:: "keytool alias" script by Céphas
:: easy method : add the known keytool.exe folder to your personal PATH variable (run : C:\Windows\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables)
:: else, add the folder containing this bat script to your personal path or put this script in any folder already defined in your path
::
:: also see keytool2.bat that automatically adds the following parameters in the keytool command line : -v -list -keystore, for quick display of jks content
:: 
:: 
@echo off
set THIS_SCRIPT=%~f0
rem  setlocal enableDelayedExpansion : necessary for paths containing special chars
setlocal enableDelayedExpansion

rem  set PATH to keytool.exe ; path must include the final \
rem  ^ is escape char for paths containing & \ < > ^ | 
set PATH_TO=C:\Program Files\Java\jre1.8.0_45\bin\
set PROG_NAME=keytool.exe

rem full_path, with "", to work with paths containing special chars
set FULL_KT_PATH="!PATH_TO!!PROG_NAME!"

rem checks if keytool.exe exists
(dir %FULL_KT_PATH%>nul 2>nul && set KT_FOUND=yes) || set KT_FOUND=no

if %KT_FOUND%==yes (
    rem keytool found => launching it with all supplied parameters
    rem 
    rem
    %FULL_KT_PATH% %*
    rem
    rem
) else (
    rem keytool not found, trying to find it in %ProgramFiles%

    echo.
    echo Keytool not found in expected location, scan in progess ...
    echo.

    cd "%ProgramFiles(x86)%" 2>nul && dir /B /S keytool.exe 2>nul

    cd "%ProgramFiles%" 2>nul && dir /B /S keytool.exe 2>nul

    echo.
    echo *********
    echo Path to program keytool.exe not properly defined, or keytool/java missing on this system
    echo If any location has been found during above scan, fix variable "PATH_TO" in %THIS_SCRIPT% accordingly
    echo *********
    echo.
    pause
    
)    

keytool2.bat:


:: 
:: 
:: "keytool2 alias" script by Céphas
:: easy method : add the known keytool.exe folder to your personal PATH variable (run : C:\Windows\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables)
:: else, add the folder containing this bat script to your personal path or put this script in any folder already defined in your path
::
:: keytool2 automatically adds the following parameters in the keytool command line : -v -list -keystore
:: thus, to quickly display the full content of a jks file, usage is simply : keytool2 \path\to\your\keystore.jks [-alias your_alias]
:: 
:: 
@echo off
set THIS_SCRIPT=%~f0
rem  setlocal enableDelayedExpansion : necessary for paths containing special chars
setlocal enableDelayedExpansion

rem  set PATH to keytool.exe ; path must include the final \
rem  ^ is escape char for paths containing & \ < > ^ | 
set PATH_TO=C:\Program Files\Java\jre1.8.0_45\bin\
set PROG_NAME=keytool.exe


rem full_path, with "", to work with paths containing special chars
set FULL_KT_PATH="!PATH_TO!!PROG_NAME!"

rem checks if keytool.exe exists
(dir %FULL_KT_PATH%>nul 2>nul && set KT_FOUND=yes) || set KT_FOUND=no

if %KT_FOUND%==yes (
    rem keytool found => launching it with all supplied parameters
    rem 
    rem
    %FULL_KT_PATH% -v -list -keystore %*
    rem
    rem
) else (
    rem keytool not found, trying to find it in %ProgramFiles%

    echo.
    echo Keytool not found in expected location, scan in progess ...
    echo.

    cd "%ProgramFiles(x86)%" 2>nul && dir /B /S keytool.exe 2>nul

    cd "%ProgramFiles%" 2>nul && dir /B /S keytool.exe 2>nul

    echo.
    echo *********
    echo Path to program keytool.exe not properly defined, or keytool/java missing on this system
    echo If any location has been found during above scan, fix variable "PATH_TO" in %THIS_SCRIPT% accordingly
    echo *********
    echo.
    pause
    
)    

Céphas
la source