2011-02-07 4 views
12

Я пытаюсь создать новый самогерметизирующийся сертифицированный файл хранилищуKeytool -genkey ошибки: Keystore файл не существует

Команды, которую я использую:

keytool -genkey -selfcert -dname "cn=My Name, ou=Orga unit" -alias selfcertified -keypass somepass -keystore keystore.jks -storepass anotherpass -validity 365 

, но я всегда получаю эту досадную ошибку:

keytool error: java.lang.Exception: Keystore file does not exist: keystore.jks 

Я не понимаю, почему я получаю эту ошибку. Команда выше должна создать новое хранилище ключей, так почему он жалуется на не существующий магазин?

ответ

18

Создание пары ключей (и нового хранилища ключей) должно выполняться как отдельная операция для создания самозаверяющего сертификата для этого ключа.

т.е.

keytool -genkey -alias myKey -keystore store.jks 
keytool -selfcert -alias myKey -keystore store.jks 
+1

из онлайн-документации keytool: хранилище ключей создается всякий раз, когда вы используете команду -genkey, -import или -identitydb для добавления данных в хранилище ключей, которое еще не существует. (Http://download.oracle.com/javase/1.4.2/docs/tooldocs/solaris/keytool.html). в соответствии с этим команда keytool должна создать новое хранилище ключей вместо того, чтобы говорить, что его не существует. не могли бы вы представить пример того, как выполнить эти два шага, которые вы упомянули? –

+0

@Chris Friedl - '-genkey' и' -selfcert' - это отдельные команды: вы не можете обойтись сразу. – OrangeDog

+0

спасибо! - наконец, две отдельные команды. Самое смешное, что есть несколько сайтов, которые предоставляют учебники с двумя командами в одной строке, как я написал выше. –

2

команду Run строку в качестве администратора, и это будет сделано.

0

-selfcert вариант был устаревают в Keytool для Java 6. Проверьте последний раздел "Перемен" здесь: Java 6 Keytool

Так что для Java 6 и далее, заменить -selfcert с -certreq