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é.


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

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.


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é.

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.


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


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

4

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


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


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


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


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.


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


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)


2

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


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.


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.


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


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!


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.


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
    
)    

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.