¿Cómo puedo encontrar y ejecutar keytool?

186

Estoy leyendo una guía de desarrollo de desarrolladores de Facebook aquí

Dice que debo usar keytool para exportar la firma de mi aplicación, como por ejemplo:

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

No sé cómo encontrar la herramienta de claves para ejecutarla. Intenté abrir un símbolo del sistema de Windows y pegar el comando anterior, pero no funcionó.

Nguyen Minh Binh
fuente
si está ejecutando un sistema basado en Linux /usr/local/java/bin# ./keytoolsi está ejecutando Windowsfind the JDK install path and check bin folder
Elshan
Encontré este ansour que puede usar para resolver el problema stackoverflow.com/a/57390582/13405428
ashraf alqaabera

Respuestas:

184

Encontré una solución por mí mismo como se cita a continuación. Funciona 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
fuente
66
Lo encontré aquí: C: \ Archivos de programa \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya
9
O C: \ Archivos de programa \ Android \ Android Studio \ jre \ bin
SHAHM
Gracias @SHAHM: genial para nosotros, las personas que no quieren descargar explícitamente Java OTRA VEZ y ser molestados todas las semanas para actualizar a la última versión.
Pete Alvin el
116

Simplemente ingréselos en el símbolo del sistema de Windows.

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

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

La contraseña base es android

Se le presentará con el MD5, SHA1y SHA256llaves; Elige el que necesitas.

remix090378
fuente
3
Esto funcionó para mí. Para las claves de depuración use -alias androiddebugkey.
Broo
Utilizo para la versión de lanzamiento la siguiente línea: 1) cd C: \ Archivos de programa \ Java \ jdk1.8.0_162 \ bin y siguiente 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

Para obtener el código hash de la clave de Android, siga estos pasos (para aplicaciones de Facebook)

  1. Descargue el openssl para Windows aquí
  2. ahora descomprime a c drive
  3. abrir cmd prompt
  4. tipo cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. luego escriba solo 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. Hecho

Para obtener el código de huella digital del certificado (MD5), siga estos pasos

  1. vaya a - C: \ Archivos de programa \ Java \ jdk1.6.0_26 \ bin
  2. dentro de la carpeta bin ejecuta el jarsigner.exearchivo
  3. abrir cmd prompt
  4. tipo cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. luego nuevamente escriba cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. le pedirá la contraseña de Keystore ahora. El valor predeterminado es " android" escribir e ingresar
  7. Hecho.
noelyahan
fuente
Esto funcionó para mí hasta el paso final. Después de escribir "android" escupe basura ... supongo que no está usando la codificación adecuada? Si ingreso algo como "bla", me dice que la contraseña era incorrecta. Entonces sabe que tengo la contraseña correcta cuando
escribo
Encontré que el problema era que había dejado las banderas -list y -v
ArtOfWarfare el
21

Keytool es parte del JDK.

Intente anteponer %{JAVA_HOME}\a la declaración ejecutiva o c:\{path to jdk}\bin.

Estanque Robby
fuente
Puse el archivo cer y el archivo del almacén de confianza en el mismo directorio y utilicé este comando:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale
13

KeyTool es parte del JDK. Lo encontrará, suponiendo que instaló el JDK con la configuración predeterminada, en$JAVA_HOME/bin

Chris Cashwell
fuente
9

Robby PondLa respuesta se puede generalizar para usar JAVA_HOMEla variable de entorno y también para compensar cualquier espacio en blanco que pueda ocurrir en la ruta (como Program Files):

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

keytool es parte de jdk, debería ser $ JAVA_HOME / bin / keytool

James.Xu
fuente
4

Keytool es parte del SDK de Java. Debería poder encontrarlo en su directorio SDK de Java, por ejemplo, C: \ Archivos de programa \ Java \ jdk1.6.0_14 \ bin

2bard
fuente
4

En la ventana de cmd (debe ejecutarse como administrador),

cd %JAVA_HOME% 

solo funciona si ha configurado la variable de entorno del sistema JAVA_HOME. Para configurar su variable de sistema para su ruta, puede hacer esto

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

Entonces, puedes escribir

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

o

cd %JAVA_HOME%\bin

Luego, ejecute cualquier comando proporcionado por JAVA jdk's, como

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

¡Solo tiene que responder las preguntas (equivalente a escribir los valores en la línea de cmd) después de presionar enter! La clave se generaría

Jenna Leaf
fuente
3

keytool se encuentra en el directorio bin JDK ($ JAVA_HOME / bin). JAVA_HOME es el directorio de instalación de JDK. Para usar esa línea de comando, también debe incluir $ JAVA_HOME / bin en su variable de entorno PATH.

Roman Mazur
fuente
3

Android: dónde ejecutar el comando keytool en android

El comando Keytool se puede ejecutar en el símbolo del sistema dos, si JRE se ha configurado en su variable classpath.

Por ejemplo, si desea obtener la huella digital MD5 del certificado de depuración SDK para Android,

solo ejecuta el siguiente comando ...

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

¿Dónde C:\Documents and Settings\user\.android>está el camino que contiene el debug.keystoreque tiene que ser certificado?

Para obtener información detallada, visite http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint

Youdhveer
fuente
3

Dependiendo de su versión de Eclipse (estoy usando Kepler). Vaya a Windows> Preferencias> Android> Compilar.

Encontrará la ruta de ubicación de su almacén de claves de depuración, así como la huella digital SHA1 (que puede copiar y usar)

GraSim
fuente
3

Encontré esto en otra publicación, que no recibió muchos votos positivos, pero fue muy útil para mí. Entonces lo agregaré aquí.

Android Studio traerá una herramienta clave con él.

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

Puedes ver su publicación a continuación por Richar Heap, con una referencia útil. Vi esto antes pero lo olvidé. https://stackoverflow.com/a/51524526/4446406

Gareth
fuente
2

KEYTOOL está en JAVAC SDK. Por lo tanto, debe encontrarlo dentro del directorio que contiene javac

suba
fuente
2

Si instaló Visual Studio con Xamarin / soporte de desarrollo móvil, tendrá una instalación de Java aquí C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\, como fue mi caso.

Nieminen
fuente
1

keytoolViene con el JDK. Si está utilizando cygwin, entonces esto probablemente ya esté en su camino. De lo contrario, podría excavar en la carpeta bin de su JDK.

Probablemente necesitará usar cygwin de todos modos para que las tuberías de shell ( |) funcionen.

Matthew Willis
fuente
¿Podría decirme cómo ejecutar el siguiente comando? keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binario | openssl base64
Nguyen Minh Binh
1
Sí, lo hice. y cuando ejecuto el comando anterior, el CMD dice: 'openssl' no se reconoce como un comando interno o externo, un programa operativo o un archivo por lotes.
Nguyen Minh Binh
Probablemente también necesite instalar el paquete openssl a través de la configuración de cygwin.
Matthew Willis
1
Ya instalé el paquete openssl. El problema aún ocurre :(
Nguyen Minh Binh
¿Se puede ejecutar openssl por sí mismo? ¿Qué opciones ves cuando escribes "abrir" y presionas tab?
Matthew Willis
1

Pocas observaciones mientras recibía el mismo problema (Windows). 1. La tubería de la carcasa es importante. 2. Si está utilizando OpenSSL o Cygwin, definitivamente debe instalarlo. 3. keytool viene con JDK, por lo que debe señalarlo en el comando o tiene un CD a la carpeta JDK / bin (donde reside el exe) 4. El almacén de claves de depuración generalmente se encuentra en ~ / .android / debug.keystore 5. la contraseña es "android" ya sea que la pase o la escriba cuando se le solicite. 6. Para el nombre de alias, puede abrir (NO GUARDAR, solo abrir y cerrar) el archivo del almacén de claves con cualquier editor y leerlo. 7. MÁS IMPORTANTE: existe una diferencia al especificar la ruta del almacén de claves entre comillas y sin comillas. Lo hice funcionar usando la ruta del almacén de claves dentro de las comillas dobles. Como remix090378 dijo y según las instrucciones, este comando realmente funcionó - cd C: \ Archivos de programa \ Java \ jdk1.7.0_09 \ bin

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

Zeena
fuente
0

En mi caso, ya había generado un archivo APK usando el comando ionic cordova build android --prody necesitaba obtener la huella digital SHA-1 para el archivo APK ya existente. Así es como lo obtuve ejecutando el siguiente comando en el directorio de la aplicación:

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

Entonces, básicamente ejecuté el comando anterior en la siguiente ubicación de la aplicación:

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

Esto me dio la huella digital SHA1 como: 7B:6B:AD:...

¡Espero que esto ayude a alguien!

Devner
fuente
0

Dado que ha instalado Java y preferiblemente un JDK en su sistema (respondiendo para Windows porque lo mencionó en su pregunta), debería tener la utilidad keytool en la bincarpeta de su instalación .

Si ese es el caso, lo que puede hacer a continuación es agregar esa carpeta bin a la PATHvariable de entorno de su instalación de Windows.

La próxima vez que abra un shell de Windows y escriba keytool, podrá ejecutar la utilidad real.

Christos Alexiou
fuente