Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Каково значение ключевого пароля в хранилище ключей с помощью keytool

Автор вопроса: G.SОтветов: 3

Я использовал следующую команду для создания jks для моего веб-приложения.

keytool -genkey -keyalg RSA -alias my-app -validity 10800 -keysize 2048 -sigalg SHA1withRSA -keystore myapp.jks

Эта команда вызвала несколько вопросов, как показано ниже:

Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  GS
What is the name of your organizational unit?
  [Unknown]:  XX
What is the name of your organization?
  [Unknown]:  YY
What is the name of your City or Locality?
  [Unknown]:  ZZ
What is the name of your State or Province?
  [Unknown]:  AA
What is the two-letter country code for this unit?
  [Unknown]:  BB
Is CN=GS, OU=XX, O=YY, L=ZZ, ST=AA, C=BB correct?
  [no]:  yes

Enter key password for <my-app> //Why this password is required???
        (RETURN if same as keystore password):

Tomcat может прочитать это хранилище ключей, только если и пароль хранилища ключей [запрашивается в первый раз], и пароль ключа. Когда я использую какой-либо другой пароль вместо "пароля ключа", tomcat не запускается из-за файла хранилища ключей.
Мой вопрос заключается в том, каково значение пароля ключа.

P.S. Я видел эту ссылку. Здесь говорят:

Press RETURN when prompted for the key password (this action makes the key password the same as the KeyStore password).

Если оба пароля должны быть одинаковыми, то есть ли смысл задавать его дважды?

javassl-certificatekeytoolkeystore

Ответы

Ответ 1 · рейтинг 9 · Maas

Как указано в JavaDoc

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

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

Ответ 2 · рейтинг 5 · Sushil Kumar Sah

Как уже ответил @Maas, keyPassword требуется для доступа к записи ключа, которая хранится в KeyStore.

Это происходит так: сначала KeyStore Password используется для доступа/разблокировки KeyStore, а затем keyPassword используется для расшифровки записи ключа, которая находится внутри этого KeyStore.

Как правило, различные реализации/использование ssl предполагают использование одного и того же пароля для KeyStorePassword и keyPassword.

То же самое и в tomcat. Если вы видите документ tomcat.apache.org/tomcat-6.0-doc/ ssl-howto.html они четко заявили, что "ваш пароль для закрытого ключа и пароль хранилища должны быть одинаковыми. Если они различаются, вы получите сообщение об ошибке, аналогичное java.io .IOException: невозможно восстановить ключ, как описано в ошибке Bugzilla 38217, которая содержит дополнительные ссылки на этот выпуск"

Даже реализация JSSE требует, чтобы KeyStorePassword и KeyPassword были одинаковыми.

https://access.redhat.com/documentation/en-US/Fuse_MQ_Enterprise/7.1/html/Security_Guide/files/SSL-SysProps.html

https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#KeyManagerFactory

Ответ 3 · рейтинг 1 · Gauntlet

У вас может быть много ключей в одном хранилище ключей, каждый со своим паролем (или таким же, как у самого хранилища ключей, если вы его выбрали). Это ваше решение, насколько вы заботитесь о безопасности ключей.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы