В дополнение к отличному ответу @ pascal-thivent:
Пароль хранилища ключей имеет две цели - если он не указан, keytool
отказывается разрешить вам заменить содержимое хранилища новым содержимым, например, удалив существующие или добавив новые записи сертификатов.
Конечно, если у вас есть доступ на запись для обновления файла хранилища ключей с помощью keytool
(это не setuid), вы можете заменить содержимое с помощью другого инструмента, который не проверяет пароль. И мы знаем, что хранилище и его формат читаемы без пароля, поэтому, предположительно, мы можем написать там, что хотим.
Вот тут и приходит проверочный пароль. Когда записи в хранилище записаны, предоставленный пароль хранилища используется для вычисления дайджеста содержимого хранилища с учетом пароля. Это односторонний хэш / дайджест, поэтому без пароля вы не сможете проверить, был ли изменен контент хранилища или нет. Точно так же злоумышленник, который не знает пароль, также не может изменить содержимое магазина и создать хэш-дайджест, который будет создан этим паролем.
Вот почему, когда вы вводите пароль без пароля, keytool
просто предупреждает вас, что не может проверить, что хранилище не было взломано. Если вы введете неверный пароль или в хранилище был * подменен , вы получите другое сообщение:
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
keytool
не удалось воссоздать существующий хэш-дайджест на основе текущего содержимого хранилища и введенного вами пароля, поэтому либо пароль неверен, либо хранилище ключей взломано - keytool
не может сказать, но предполагает что вы или программное обеспечение, читающее магазин, знает.
Обратите внимание, что хотя термин хранилище ключей обычно используется, он в равной степени относится к хранилищам ключей и хранилищам доверенных сертификатов . Менее обычно хранилище ключей чаще всего является хранилищем идентификаторов и содержит идентификаторы и их секретные, закрытые ключи, которые используются, например. сервером, работающим по протоколу HTTPS. В хранилище доверенных сертификатов чаще всего содержатся только открытые ключи и нет закрытых ключей, поэтому никаких секретов нет, но важно определить, какие удостоверения клиент доверяет.