Где хранится пароль KeyStore и ключевой пароль

Я использовал Windows и Linux-машину для создания хранилища ключей Java (JKS) с помощью java keytool. Когда я запускаю команду keytool, упомянутую ниже:

keytool -genkey -alias TESTSSL -dname "cn=Test.com, ou=testlab, o=myorg, c=UK" -keyalg "RSA" -keysize 2048 -keystore TESTSSL.private.jks -validity 10 -storepass ХХХХХХ

Предлагается ввести пароль хранилища ключей и пароль ключа.

Вопрос в том, что я хочу знать, где хранятся оба пароля и в какой форме. Хранится ли он в файле хранилища ключей или где-то еще в ОС (если это так, узнайте точное местоположение).

Любая информация, связанная с этим, высоко ценится.


person Muhammad Hassan    schedule 20.03.2019    source источник


Ответы (2)


Обратите внимание, что вы фактически создаете по умолчанию формат хранилища ключей, предполагая, что этот файл не существует во время запуска keytool; до Java 8 по умолчанию используется JKS, но начиная с версии 9 — PKCS12. (Имя файла something.jks не влияет на формат, так же как и имя something.lollipop не делает его детским.)

Если вы укажете -storepass whatever в командной строке, как вы сказали, он не должен запрашивать пароль хранилища ключей - по крайней мере, не в этой операции; если вы снова запустите keytool, чтобы (повторно) использовать тот же файл, это предложит, если вы снова не укажете его в этой командной строке. Точно так же, если вы укажете -keypass whatever в командной строке, когда это необходимо в зависимости от операции, он не должен запрашивать пароль ключа.

Для JKS JCEKS и PKCS12 пароли вообще не сохраняются. Это было бы крайне небезопасно. Вместо этого пароль(и) плюс «соль» (рандомизированное значение) обрабатываются односторонним алгоритмом «получения ключа» для создания ключа(ей), используемых для шифрования как минимум записей закрытого ключа. в хранилище ключей и для аутентификации (MAC) всего хранилища ключей. PKCS12, реализованный в Java (слабо), шифрует как сертификаты, так и закрытые ключи; JKS и JCEKS - нет. PKCS12, реализованный в Java, может не поддерживать пароль закрытого ключа, отличный от пароля хранилища.

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

Для нефайловых хранилищ ключей, таких как PKCS11 в некоторых системах или хранилище, предоставленное ОС в Windows, то, как реализован и используется пароль — если вообще — зависит от особенностей этого хранилища ключей, хотя хранение пароля обычно быть плохой или плохой практикой.

person dave_thompson_085    schedule 20.03.2019

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

person paltaie    schedule 20.03.2019