keytool error bash: keytool: command not found

JavaTomcatSslCertificateKeytool

Java Problem Overview


I have tried to execute keytool from Java bin directory but I get an error with warning bash: keytool: command not found.

root@xxxxxx]# keytool -genkey -alias mypassword -keyalg RSA

bash: keytools: command not found

Java Solutions


Solution 1 - Java

These are the steps which solved my problem:

  • Search the path where my java was installed

     find / -name jre
    
  • Move to java directory (where jre was installed on my server)

     cd /path/to/jre/bin
    
  • Create SSL certificate with keytool command

     ./keytool -genkey -alias [mypassword] -keyalg [RSA]
    

Solution 2 - Java

Use

./keytool -genkey -alias mypassword -keyalg RSA

Solution 3 - Java

Ensure jre is installed.

cd /path/to/jre/bin/folder

As keytool file is present in the bin folder of jre, give path till bin as in the command above.

Then you can do:

keytool -genkey -alias aliaskeyname -keyalg RSA -keystore C:\mykeystore

The additional option -keystore will help you to specify the path where you want the generated self signed certificate.

Solution 4 - Java

It seems that calling sudo update-alternatives --config java effects keytool. Depending on which version of Java is chosen it changes whether or not keytool is on the path. I had to chose the open JDK instead of Oracle's JDK to not get bash: /usr/bin/keytool: No such file or directory.

Solution 5 - Java

find your jre location ::sudo find / -name jre And then :: sudo update-alternatives --install /usr/bin/keytool keytool /opt/jdk/<jdk.verson>/jre/bin/keytool 100

Solution 6 - Java

If you are looking for keytool because you are working with Android studio / Google Firebase, there is a keytool bundled with Android Studio. After extracting the zip file, the path to keytool is android-studio/jre/bin.

Solution 7 - Java

This worked for me

sudo apt install openjdk-8-jre-headless

Solution 8 - Java

Keytool comes with your Java library. So you have to execute the Keytool command from your /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/bin directory. Or you can add JAVA_HOME to your environmental variables (Windows) or ~/.bash_profile (Linux)

Solution 9 - Java

You tried:

sudo apt-get install oracle-java6-installer --reinstall

and:

sudo update-alternatives --config keytool

Solution 10 - Java

You could also put this on one line like so:

/path/to/jre/bin/keytool -genkey -alias [mypassword] -keyalg [RSA]

Wanted to include this as a comment on piet.t answer but I don't have enough rep to comment.

See the "signing" section of this article that describes how to access the keytool.exe without changing your working directory to the path: https://flutter.dev/docs/deployment/android#signing-the-app

Note that they say you can type in space separated folder names like /"Program Files"/ with quotes but I found in bash i had to separate with back slashes like /Program\ Files/.

Solution 11 - Java

If the jre is installed on your machine properly then look for keytool in jre or in jre/bin

  1. to find where jre is installed, use this

    sudo find / -name jre

  2. Then look for keytool in path_to_jre or in path_to_jre/bin

  3. cd to keytool location

  4. then run ./keytool

  5. Make sure to add the the path to $PATH by

    export PATH=$PATH:location_to_keytool

  6. To make sure you got it right after this, run

    where keytool

  7. for future edit you bash or zshrc file and source it

Solution 12 - Java

If you are not using openjdk, use the below commands to set your keytool.

sudo update-alternatives --install "/usr/bin/keytool" "keytool" "/usr/lib/jvm/java8/jdk1.8.0_251/bin/keytool" 1

AND

sudo update-alternatives --set keytool /usr/lib/jvm/java8/jdk1.8.0_251/bin/keytool

This worked for me!

Solution 13 - Java

Please follow the steps:

  1. first set the domain using setDomain.sh command go to domain/bin location and execute ./setDomain.sh command

  2. go to java/bin folder and execute keytool command.

keytool -genkey -keyalg RSA -kaysize 2048 -alias name -kaystore file.jks

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser217929View Question on Stackoverflow
Solution 1 - Javauser217929View Answer on Stackoverflow
Solution 2 - JavaMichaelView Answer on Stackoverflow
Solution 3 - Javalearner_19View Answer on Stackoverflow
Solution 4 - JavaAldaronLauView Answer on Stackoverflow
Solution 5 - JavaMSR SHAHEENView Answer on Stackoverflow
Solution 6 - JavaP.R.View Answer on Stackoverflow
Solution 7 - JavaJManView Answer on Stackoverflow
Solution 8 - JavaGeneView Answer on Stackoverflow
Solution 9 - JavaHpsaturnView Answer on Stackoverflow
Solution 10 - JavaRobert SilverView Answer on Stackoverflow
Solution 11 - JavavikasView Answer on Stackoverflow
Solution 12 - JavaVicXjView Answer on Stackoverflow
Solution 13 - Javashyam kView Answer on Stackoverflow