Nguyen  Minh Binh
Nguyen Minh Binh

Reputation: 24433

How can I find and run the keytool

I am reading an development guide of Facebook Developers at here

It says that I must use keytool to export the signature for my app such as:

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

I do not know how to find the keytool in order to run it. I tried to open a Windows command prompt and paste the above command, but it did not work.

Upvotes: 265

Views: 609035

Answers (25)

Brad
Brad

Reputation: 950

If you are using Unity and have not installed java or android studio none of the paths mentioned will work.

Unity installs a copy of the jre keytool inside each of it's editor folders.

You can use unity hub to open the location of the editor version you are using and fromt here open: Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin.

For example my exact path is: C:\Program Files\Unity\Hub\Editor\2021.3.10f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin

Then just open a terminal in that location and run it from there. If on windows you might have to type keytool.exe no just keytool depending on what terminal/shell you use.

You could add it to your system path but its not nessisary and you might want to be able to change what version your using so I prefer to just use it as is.

Upvotes: 1

Prem
Prem

Reputation: 1

#Go to the path where cacerts or jsk is present and open and run below command on cmd

keytool -v -list -keystore cacerts

keytool -v -list -keystore .jks

Upvotes: 0

Nata Anthony
Nata Anthony

Reputation: 31

Consider adding PATH as an Environment variable and access it via cmd.

PATH as the value and C:\Program Files\Java\jre1.8.0_331\bin as the variable and access it via keytool ...

Upvotes: 0

kidroca
kidroca

Reputation: 3866

On Windows

If your using Jetbrain's Toolbox, to manage Android Studio update, the path is something like

C:\Users\{USERNAME}\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\202.7486908\jre\bin 

After an update I have to manually update/set this path as JAVA_HOME (the jre folder)

Upvotes: 1

Tide
Tide

Reputation: 131

In addition to Gareth's

answer above, the below worked for me

Simply enter these into Windows command prompt.

Make sure the terminal is run as adminstrator

  1. cd C:\Program Files\Android\Android Studio\jre\bin

  2. keytool -list -v -keystore "C:\Users\admin.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Read more

N:B: This should be done after the first build, as the keys are only generated after first build

Upvotes: 2

Céphas
Céphas

Reputation: 11

Alternatively you can do the following :

  • copy the bat file below in any folder already present in your PATH environment variable
  • then simply use keytool command in any Windows shell

Actual location of keytool is defined in the bat file. In case the location is wrong the bat file will scan your system to detect potential locations in ProgramFiles (sub)folders.

Also find keytool2.bat, a convinient shortcut for "keytool -v -list -keystore", which is widely used to quickly check the content of a jks file.

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
    
)    

Upvotes: 1

Nguyen  Minh Binh
Nguyen Minh Binh

Reputation: 24433

I found a solution by myself as below quote. It works fine.

"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

Upvotes: 256

Gareth
Gareth

Reputation: 401

I found this on another post, which did not get many upvotes, but it was super helpful for me. So will add it here.

Android Studio will bring a keytool with it.

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

You can see his post below by Richar Heap, with a helpful reference. I did see this before but forgot about it. https://stackoverflow.com/a/51524526/4446406

Upvotes: 24

Christos Alexiou
Christos Alexiou

Reputation: 9

Given that you have installed Java and preferably a JDK in your system ( answering for Windows because you mentioned it in your question) you should have the keytool utility on your installation's bin folder.

If that's the case, what you can do next is add that bin folder to the PATH environment variable of your Windows installation.

The next time you will open a Windows shell and you'll type keytool you will be able to run the actual utility.

Upvotes: -1

Devner
Devner

Reputation: 7255

In my case, I had already generated an APK file using the command ionic cordova build android --prod and I needed to get the SHA-1 fingerprint for the already existing APK file. Here's how I got it by running the following command in the App directory:

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

So, I basically ran the above command in the following app location:

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

This gave me the SHA1 fingerprint as: 7B:6B:AD:...

Hope this helps someone!

Upvotes: 0

Nieminen
Nieminen

Reputation: 1284

If you installed visual studio with Xamarin/mobile development support, you'll have a java install here C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\, as was my case.

Upvotes: 3

Alexei - check Codidact
Alexei - check Codidact

Reputation: 23078

Robby Pond's answer can be generalized to use JAVA_HOME environment variable and to also compensate for any blanks that might occur in the path (like Program Files):

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

Upvotes: 11

Jenna Leaf
Jenna Leaf

Reputation: 2462

On cmd window (need to run as Administrator),

cd %JAVA_HOME% 

only works if you have set up your system environment variable JAVA_HOME . To set up your system variable for your path, you can do this

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

Then, you can type

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

or

cd %JAVA_HOME%\bin

Then, execute any commands provided by JAVA jdk's, such as

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

You just have to answer the questions (equivalent to typing the values on cmd line) after hitting enter! The key would be generated

Upvotes: 4

noelyahan
noelyahan

Reputation: 4255

To get android key hash code follow these steps (for facebook apps)

  1. Download the openssl for windows here
  2. now unzip to c drive
  3. open cmd prompt
  4. type cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. then type only 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. Done

To get Certificate fingerprint(MD5) code follow these steps

  1. go to - C:\Program Files\Java\jdk1.6.0_26\bin
  2. inside the bin folder run the jarsigner.exe file
  3. open cmd prompt
  4. type cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. then again type on cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. it will ask for Keystore password now. The default is "android" type and enter
  7. Done.

Upvotes: 80

suba
suba

Reputation: 69

KEYTOOL is in JAVAC SDK .So you must find it in inside the directory that contaijns javac

Upvotes: 2

Zeena
Zeena

Reputation: 429

Few observations while I was getting the same problem (Windows). 1. Shell pipe is important. 2. If you are using OpenSSL or Cygwin, definitely you have to install it. 3. keytool comes with JDK so either you have to point to it in the command or you have cd to the JDK/bin folder (where the exe resides) 4. The debug keystore is typically located at ~/.android/debug.keystore 5. password is "android" whether you -keypass it or type it when prompted. 6. For the alias name, you can open (DO NOT SAVE, just open and close) the keystore file with any editor and read it. 7. MOST IMPORTANT - There is a difference is specifying the keystore path within quotes and without. I got it working by using the keystore path within the double quotes. As remix090378 said and as per the instruction, this command indeed worked - cd C:\Program Files\Java\jdk1.7.0_09\bin

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

Upvotes: 1

remix090378
remix090378

Reputation: 1549

Simply enter these into Windows command prompt.

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

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

The base password is android

You will be presented with the MD5, SHA1, and SHA256 keys; Choose the one you need.

Upvotes: 144

GraSim
GraSim

Reputation: 4220

Depending on your version of Eclipse ( I am using Kepler). Go to Windows> Preferences>Android> Build.

You'll find the location path of your debug keystore as well as the SHA1 fingerprint (which you can just copy and use)

Upvotes: 3

Youdhveer
Youdhveer

Reputation: 559

Android: where to run keytool command in android

Keytool command can be run at your dos command prompt, if JRE has been set in your classpath variable.

For example, if you want to get the MD5 Fingerprint of the SDK Debug Certificate for android,

just run the following command...

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

where C:\Documents and Settings\user\.android> is the path which contains the debug.keystore that has to be certified.

For detailed information, please visit http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint

Upvotes: 3

Chris Cashwell
Chris Cashwell

Reputation: 22899

The KeyTool is part of the JDK. You'll find it, assuming you installed the JDK with default settings, in $JAVA_HOME/bin

Upvotes: 13

Twobard
Twobard

Reputation: 2583

Keytool is part of the Java SDK. You should be able to find it in your Java SDK directory e.g. C:\Program Files\Java\jdk1.6.0_14\bin

Upvotes: 5

Roman Mazur
Roman Mazur

Reputation: 3074

keytool is located in JDK bin directory ($JAVA_HOME/bin). JAVA_HOME is your JDK installation directory. To use that command line you should also include $JAVA_HOME/bin to your PATH environment variable.

Upvotes: 5

James.Xu
James.Xu

Reputation: 8295

keytool is part of jdk, it should be $JAVA_HOME/bin/keytool

Upvotes: 6

Matthew
Matthew

Reputation: 44919

keytool comes with the JDK. If you are using cygwin then this is probably on your path already. Otherwise, you might dig around in your JDK's bin folder.

You'll probably need to use cygwin anyways for the shell pipes (|) to work.

Upvotes: 1

Robby Pond
Robby Pond

Reputation: 73494

keytool is part of the JDK.

Try to prepend %{JAVA_HOME}\ to the exec statement or c:\{path to jdk}\bin.

Upvotes: 34

Related Questions