нераспознанная опция -keypass при получении MD5 отпечатка сертификата отладки для ключа API Карт Google - PullRequest
1 голос
/ 17 марта 2011

я использовал linux ubuntu 10.10 ....... мой android debug.keystore находится в папке ~/.android/debug.keystore.

я использовал следующие команды терминала, как описано в http://code.google.com/android/add-ons/google-apis/mapkey.html

rakib@rakib-laptop:~/.android$ \
> keytool -list \
> -alias androiddebugkey \
> -keystore "~/.android/debug.keystore" \
> -storepass android \
> -keypass android

, и он возвращает следующую ошибку

list: unrecognized option '-keypass'
list: Try 'list -help' for more information

я понятия не имею, почему это не такраспознавание опции -keypass ....... ВСЕ, кто еще использует это.

Ответы [ 4 ]

5 голосов
/ 19 марта 2011

Итак, благодаря серии быстрого участия на StackOverflow.com и на Android-Developer-googleGroup , теперь решение очевидно ... позвольте мне датькраткое изложение того, как я ее решил, на случай, если у кого-то из вас возникла подобная проблема .

мой разработчик для Android debug.keystore файл находится в следующем местеlinux

~/.android/debug.keystore

, затем i cd ~ и следуйте инструкциям, указанным на странице Google Projects для Android для Получение ключа API Карт для получения отпечатка md5 моего debug.keystore

rakib@rakib-laptop:~$ \
> keytool \
> -list \
> -alias androiddebugkey \
> -keystore ~/.android/debug.keystore \
> -storepass android \
> -keypass android

но он вернул глупую досадную ошибку

list: unrecognized option '-keypass'
list: Try 'list -help' for more information

, и именно тогда я начал все форумы и обсуждения и т. Д., Но не нашел правильного решения.После нескольких сообщений на форуме я понял, что мой простой вызов keytool относится к нежелательному keytool - инструменту keytool, который, похоже, происходит из компилятора GNU для Java.Для Android достаточно использовать keytool от Sun / Oracle Java

Следовательно, я сделал следующее, чтобы узнать все экземпляры различных программ keytool, которые есть в моей системе linux.

rakib@rakib-laptop:~$ locate keytool

и это дало мне следующий список

/etc/alternatives/keytool
/etc/alternatives/keytool.1.gz
/home/rakib/java-WTK-2.5.2/bin/mekeytool
/usr/bin/gkeytool-4.4
/usr/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/jre/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/man/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/bin/keytool
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin/keytool
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/man/man1/keytool.1.gz
/usr/share/man/man1/gkeytool-4.4.1.gz
/usr/share/man/man1/keytool.1.gz
/var/lib/dpkg/alternatives/keytool

Бинго !!!так много экземпляров keytool было найдено.Теперь мне нужно использовать один в Java-6-Sun JRE.Итак, cd в этот каталог, найденный из команды locate keytool выше

rakib@rakib-laptop:~$ cd /usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin/

, теперь, когда терминал находится внутри java-6-sun / jre / bin , я набрал следующую команду - помните, что мой файл debug.keystore находился в ~ / .android / debug.keystore ?

rakib@rakib-laptop:/usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin$ \
> ./keytool \
> -list -alias androiddebugkey \
> -keystore ~/.android/debug.keystore \
> -storepass android \
> -keypass android

и вуаля ..... которая вернула отпечаток MD5 моего сертификата отладки Android, который я искал.

androiddebugkey, Mar 19, 2011, PrivateKeyEntry, 
Certificate fingerprint (MD5): 08:A6:77:9C:97:66:CA:00:B9:6B:82:6B:37:64:B8:14

Обратите внимание, что когда я набирал команду keytoolиз папки java-6-sun / jre / bin вы не должны писать просто «keytool» .вы должны вместо этого написать "./keytool" - с точкой и косой чертой, чтобы подразумевать, что вы ссылаетесь на keytool внутри текущего каталога , где находится терминал.

rakib@rakib-laptop:~$ WooooooHooooooooooooooo!!!!!

PostNote: эта проблема с выполнением неправильного инструмента keytool возникала из-за того, что моя JRE java-6-sun не была средой java по умолчанию в моемубунт.скорее, мой Java-компилятор GNU был установлен в качестве среды Java по умолчанию.чтобы изменить среду Java по умолчанию на вашем компьютере с Linux, см. Справка сообщества Ubuntu для Java

2 голосов
/ 19 марта 2011

Ваш keytool, похоже, из компилятора GNU для Java.Android требует Sun / Oracle Java, хотя OpenJDK может работать и для вас.Попробуйте использовать keytool из поддерживаемой среды Java.

0 голосов
/ 21 марта 2011

Вам всем не хватает того факта, что это ошибка документации.

Команда Keytool -list не принимает аргумент -keypass. Он не нужен, так как -list не имеет доступа к закрытому ключу.

Если вы вызываете 'keytool' без аргументов, он говорит вам:

-лист [-v | -rfc] [-защищено] [-alias] [-keystore] [-storepass] [-storetype] [-providername] [-providerclass [-providerarg]] ... [-providerpath]

Примечание: без ключа

Это ошибка документации по адресу: http://code.google.com/android/add-ons/google-apis/mapkey.html

Причина, по которой он работает, когда вы переключаетесь на использование инструмента ключей Sun / Oracle, заключается в том, что в этом случае версия не сигнализирует об ошибке. Но, как вы можете видеть выше - он также специально не использует его.

Криптография с открытым ключом основана на стандартах. До тех пор, пока любой инструмент может получить доступ к нестандартному формату хранилища ключей Java (или если вы используете стандартный, такой как PKCS12), вы сможете использовать этот инструмент для любой задачи, связанной с фактической подписью, и любой отпечаток MD5, который вы можете получить от инструмента. чтобы показать, что вы должны быть эквивалентны.

Не предоставляйте фиктивных аргументов, и вы должны быть в порядке с любым инструментом keytool, с которым вы в конечном итоге.

Edit: Обратите внимание, что он принимает аргумент -storepass. Если вы зашифровали все хранилище ключей и не указали пароль шифрования, он не будет понимать ваше хранилище ключей и получит ошибку. Вы можете указать его либо с -storepass password , либо по запросу в командной строке. Просто набрать Enter, когда пароль был установлен, конечно, не будет работать.

В отличие от -keypass предоставляет пароль для закрытого ключа. Он используется только в командах, которые фактически обращаются к закрытому ключу, например, для подписи.

0 голосов
/ 17 марта 2011

Попробуйте:

keytool -list -alias androiddebugkey -keystore .android/debug.keystore

Вы не вставили pwd, если он не настроен.

Надеюсь, это поможет вам.

...