В дополнение к отличному ответу 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. хранилище доверенных сертификатов чаще содержит только открытые ключи, а не закрытые ключи, поэтому не содержит секретов, но важно определить, каким удостоверениям доверяет клиент.
person
javabrett
schedule
20.05.2016