keytool error bash: keytool: command not found
JavaTomcatSslCertificateKeytoolJava 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
-
to find where jre is installed, use this
sudo find / -name jre
-
Then look for keytool in path_to_jre or in path_to_jre/bin
-
cd to keytool location
-
then run ./keytool
-
Make sure to add the the path to $PATH by
export PATH=$PATH:location_to_keytool
-
To make sure you got it right after this, run
where keytool
-
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:
-
first set the domain using
setDomain.sh
command go todomain/bin
location and execute./setDomain.sh
command -
go to
java/bin
folder and executekeytool
command.
keytool -genkey -keyalg RSA -kaysize 2048 -alias name -kaystore file.jks