Класс KeyStore
public class KeyStore extends Object
Управление KeyStore осуществляет управление различными типами записей. Каждый тип записи реализует интерфейс KeyStore.Entry. Предоставляются три основных реализации KeyStore.Entry:
-
KeyStore.PrivateKeyEntry
Этот тип записи содержит криптографический
PrivateKey, который необязательно хранится в защищенном формате для предотвращения несанкционированного доступа. Он также сопровождается цепочкой сертификатов для соответствующего открытого ключа.Закрытые ключи и цепочки сертификатов используются данным субъектом для самоаутентификации. Примеры такого применения включают организации, распространяющие программное обеспечение, которые подписывают JAR-файлы как часть выпуска и/или лицензирования программного обеспечения.
-
KeyStore.SecretKeyEntry
Этот тип записи содержит криптографический
SecretKey, который необязательно хранится в защищенном формате для предотвращения несанкционированного доступа. -
KeyStore.TrustedCertificateEntry
Этот тип записи содержит единственный открытый ключ
Certificate, принадлежащий другой стороне. Он называется доверенным сертификатом, потому что владелец хранилища доверяет, что открытый ключ в сертификате действительно принадлежит идентичности, указанной в субъекте (владельце) сертификата.Этот тип записи можно использовать для аутентификации других сторон.
Каждая запись в хранилище идентифицируется строкой «псевдоним». В случае закрытых ключей и связанных с ними цепочек сертификатов эти строки различают различные способы, с помощью которых субъект может аутентифицировать себя. Например, субъект может аутентифицировать себя с помощью разных центров сертификации или с помощью разных алгоритмов открытых ключей.
Являются ли псевдонимы регистрозависимыми, зависит от реализации. Для предотвращения проблем рекомендуется не использовать в хранилище KeyStore псевдонимы, отличающиеся только регистром.
Являются ли хранилища KeyStore постоянными и какие механизмы используются хранилищем, если оно постоянно, здесь не указаны. Это позволяет использовать различные методы защиты конфиденциальных (например, закрытых или секретных) ключей. Одним из вариантов являются смарт-карты или другие интегрированные криптографические процессоры (SafeKeyper), а также могут использоваться более простые механизмы, такие как файлы (в различных форматах).
Типичные способы запроса объекта KeyStore включают указание существующего файла хранилища, использование по умолчанию и указание конкретного типа хранилища.
- Чтобы указать существующий файл хранилища:
// get keystore password char[] password = getPassword(); // probe the keystore file and load the keystore entries KeyStore ks = KeyStore.getInstance(new File("keyStoreName"), password);Система проверит указанный файл, чтобы определить его тип хранилища, и вернет реализацию хранилища с уже загруженными записями. При использовании этого подхода нет необходимости вызывать методloadхранилища. - Чтобы использовать тип по умолчанию:
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());Система вернет реализацию хранилища для типа по умолчанию. - Чтобы указать конкретный тип хранилища:
KeyStore ks = KeyStore.getInstance("JKS");Система вернет предпочтительную реализацию указанного типа хранилища, доступную в среде.
Перед доступом к хранилищу оно должно быть loaded (если оно не было загружено во время создания).
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
// get user password and file input stream
char[] password = getPassword();
try (FileInputStream fis = new FileInputStream("keyStoreName")) {
ks.load(fis, password);
}
Для создания пустого хранилища с использованием вышеуказанного метода load, передайте null в качестве аргумента InputStream. После загрузки хранилища можно читать существующие записи из хранилища или записывать новые в хранилище:
KeyStore.PasswordProtection protParam =
new KeyStore.PasswordProtection(password);
try (FileOutputStream fos = new FileOutputStream("newKeyStoreName")) {
// get my private key
KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry)
ks.getEntry("privateKeyAlias", protParam);
PrivateKey myPrivateKey = pkEntry.getPrivateKey();
// save my secret key
javax.crypto.SecretKey mySecretKey;
KeyStore.SecretKeyEntry skEntry =
new KeyStore.SecretKeyEntry(mySecretKey);
ks.setEntry("secretKeyAlias", skEntry, protParam);
// store away the keystore
ks.store(fos, password);
} finally {
protParam.destroy();
}
Обратите внимание, что хотя для загрузки хранилища можно использовать один и тот же пароль, для защиты записи закрытого ключа, для защиты записи секретного ключа и для хранения хранилища (как показано в примере кода выше), также можно использовать разные пароли или другие параметры защиты. Каждая реализация платформы Java обязана поддерживать следующие стандартные KeyStore типы:
PKCS12
- С момента:
- 1.2
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
KeyStore.Builder |
Описание объекта KeyStore, подлежащего созданию экземпляра. |
static class |
KeyStore.CallbackHandlerProtection |
Объект ProtectionParameter, инкапсулирующий обработчик обратных вызовов (CallbackHandler). |
static interface |
KeyStore.Entry |
Маркерный интерфейс для типов записей ввода KeyStore. |
static interface |
KeyStore.LoadStoreParameter |
|
static class |
KeyStore.PasswordProtection |
Реализация ProtectionParameter на основе пароля. |
static final class |
KeyStore.PrivateKeyEntry |
Запись KeyStore содержащая ключ PrivateKey и соответствующую цепочку сертификатов. |
static interface |
KeyStore.ProtectionParameter |
Маркерный интерфейс для параметров защиты хранилища ключей. |
static final class |
KeyStore.SecretKeyEntry |
Запись KeyStore содержащая SecretKey. |
static final class |
KeyStore.TrustedCertificateEntry |
Запись KeyStore содержащая доверенный Certificate. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект KeyStore заданного типа и инкапсулирует в нём заданную реализацию поставщика (SPI-объект). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final Enumeration |
aliases() |
Выводит все псевдонимы (alias names) этого хранилища ключей. |
final boolean |
containsAlias |
Проверяет, существует ли заданный псевдоним (alias) в этом хранилище ключей. |
final void |
deleteEntry |
Удаляет запись, идентифицированную заданным псевдонимом (alias), из этого хранилища ключей. |
final boolean |
entryInstanceOf |
Определяет, является ли хранилище ключей Entry для указанного alias экземпляром или подклассом указанного entryClass. |
final Set |
getAttributes |
Возвращает атрибуты, связанные с заданным псевдонимом. |
final Certificate |
getCertificate |
Возвращает сертификат, связанный с заданным псевдонимом. |
final String |
getCertificateAlias |
Возвращает (псевдоним) имя первой записи хранилища ключей, чей сертификат соответствует заданному сертификату. |
final Certificate[] |
getCertificateChain |
Возвращает цепочку сертификатов, связанную с заданным псевдонимом. |
final Date |
getCreationDate |
Возвращает дату создания записи, идентифицированной заданным псевдонимом. |
static final String |
getDefaultType() |
Возвращает тип хранилища ключей по умолчанию, указанный свойством безопасности keystore.type, или строку "jks" (аббревиатура от "Java keystore"), если такое свойство не существует. |
final KeyStore.Entry |
getEntry |
Получает хранилище ключей Entry для указанного псевдонима с указанным параметром защиты. |
static final KeyStore |
getInstance |
Возвращает загруженный объект хранилища ключей соответствующего типа. |
static final KeyStore |
getInstance |
Возвращает загруженный объект хранилища ключей соответствующего типа. |
static KeyStore |
getInstance |
Возвращает объект KeyStore заданного типа. |
static KeyStore |
getInstance |
Возвращает объект KeyStore заданного типа. |
static KeyStore |
getInstance |
Возвращает объект KeyStore заданного типа. |
final Key |
getKey |
Возвращает ключ, связанный с заданным псевдонимом, используя указанный пароль для его извлечения. |
final Provider |
getProvider() |
Возвращает поставщика (provider) этого хранилища ключей. |
final String |
getType() |
Возвращает тип этого хранилища ключей. |
final boolean |
isCertificateEntry |
Возвращает true, если запись, идентифицированная заданным псевдонимом, была создана вызовом setCertificateEntry, или создана вызовом setEntry с параметром TrustedCertificateEntry. |
final boolean |
isKeyEntry |
Возвращает true, если запись, идентифицированная заданным псевдонимом, была создана вызовом setKeyEntry, или создана вызовом setEntry с параметром PrivateKeyEntry или SecretKeyEntry. |
final void |
load |
Загружает это хранилище ключей из заданного потока ввода. |
final void |
load |
Загружает это хранилище ключей, используя заданный LoadStoreParameter. |
final void |
setCertificateEntry |
Присваивает заданный доверенный сертификат заданному псевдониму. |
final void |
setEntry |
Сохраняет хранилище ключей Entry под указанным псевдонимом. |
final void |
setKeyEntry |
Присваивает заданный ключ (который уже был защищён) заданному псевдониму. |
final void |
setKeyEntry |
Присваивает заданный ключ заданному псевдониму, защищая его указанным паролем. |
final int |
size() |
Возвращает количество записей в этом хранилище ключей. |
final void |
store |
Сохраняет это хранилище ключей в заданном потоке вывода и защищает его целостность заданным паролем. |
final void |
store |
Сохраняет это хранилище ключей, используя заданный LoadStoreParameter. |
Подробное описание конструкторов
KeyStore
protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
KeyStore, и инкапсулирует в нём заданную реализацию поставщика (объект SPI).- Параметры:
-
keyStoreSpi- реализация поставщика. -
provider- поставщик. -
type- тип хранилища ключей.
Подробное описание методов
getInstance
public static KeyStore getInstance(String type) throws KeyStoreException
KeyStore указанного типа. Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi от первого поставщика, который поддерживает указанный тип.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Описание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения порядка предпочтительных поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
type- тип хранилища ключей. См. раздел KeyStore в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных типах хранилищ ключей. - Возвращаемое значение:
- объект хранилища ключей указанного типа
- Исключения:
-
KeyStoreException- если ни один поставщик не поддерживает реализациюKeyStoreSpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull - См. также:
getInstance
public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
KeyStore указанного типа. Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
type- тип хранилища ключей. См. раздел KeyStore в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных типах хранилищ ключей. -
provider- имя поставщика. - Возвращаемое значение:
- объект хранилища ключей указанного типа
- Исключения:
-
IllegalArgumentException- если имя поставщика являетсяnullили пустым -
KeyStoreException- если реализацияKeyStoreSpiдля указанного типа недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиtypeявляетсяnull - См. также:
getInstance
public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
KeyStore указанного типа. Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi от указанного объекта поставщика. Обратите внимание, что указанный объект поставщика не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
type- тип хранилища ключей. См. раздел KeyStore в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных типах хранилищ ключей. -
provider- поставщик. - Возвращаемое значение:
- объект хранилища ключей указанного типа
- Исключения:
-
IllegalArgumentException- если указанный поставщикnull -
KeyStoreException- если реализацияKeyStoreSpiдля указанного типа недоступна от указанного объектаProvider -
NullPointerException- еслиtypeявляетсяnull - См. также:
getDefaultType
public static final String getDefaultType()
keystore.type, или строку "jks" (аббревиатура от "Java keystore"), если такого свойства не существует. Тип хранилища ключей по умолчанию может использоваться приложениями, которые не хотят использовать жёстко закодированный тип хранилища ключей при вызове одного из методов getInstance, и хотят предоставить тип хранилища ключей по умолчанию в случае, если пользователь не указывает свой собственный.
Тип хранилища ключей по умолчанию может быть изменён путём задания значения свойства безопасности keystore.type к нужному типу хранилища ключей.
- Возвращаемое значение:
- тип хранилища ключей по умолчанию, заданный свойством безопасности
keystore.type, или строка "jks", если такого свойства не существует. - См. также:
getProvider
public final Provider getProvider()
- Возвращаемое значение:
- поставщик данного хранилища ключей.
getType
public final String getType()
- Возвращаемое значение:
- тип данного хранилища ключей.
getAttributes
public final Set<KeyStore.Entry.Attribute> getAttributes(String alias) throws KeyStoreException
- Параметры:
-
alias- имя псевдонима - Возвращаемое значение:
- неизменяемый набор
Setатрибутов. Этот набор пуст, если реализацияKeyStoreSpiне переопределилаKeyStoreSpi.engineGetAttributes(String), или данный псевдоним не существует, или атрибуты не связаны с псевдонимом. Этот набор также может быть пустым для записейPrivateKeyEntryилиSecretKeyEntry, содержащих защищённые атрибуты, которые доступны только через методKeyStore.Entry.getAttributes()после извлечения записи. - Исключения:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено). -
NullPointerException- еслиaliasявляетсяnull
getKey
public final Key getKey(String alias, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
setKeyEntry, или вызовом setEntry с PrivateKeyEntry или SecretKeyEntry. - Параметры:
-
alias- имя псевдонима -
password- пароль для восстановления ключа - Возвращаемое значение:
- запрошенный ключ, или
nullесли заданный псевдоним не существует или не идентифицирует запись, связанную с ключом. - Исключения:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено). -
NoSuchAlgorithmException- если алгоритм восстановления ключа не найден -
UnrecoverableKeyException- если ключ не может быть восстановлен (например, заданный пароль неверный).
getCertificateChain
public final Certificate[] getCertificateChain(String alias) throws KeyStoreException
setKeyEntry, или вызовом setEntry с PrivateKeyEntry. - Параметры:
-
alias- имя псевдонима - Возвращаемое значение:
- цепочка сертификатов (упорядоченная с сертификатом пользователя в начале, за которым следуют нуль или более сертификатов уполномоченных организаций), или
nullесли заданный псевдоним не существует или не содержит цепочки сертификатов - Исключения:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
getCertificate
public final Certificate getCertificate(String alias) throws KeyStoreException
Если данное имя псевдонима идентифицирует запись, созданную с помощью вызова setCertificateEntry, или созданную с помощью вызова setEntry с TrustedCertificateEntry, то возвращается доверенный сертификат, содержащийся в этой записи.
Если данное имя псевдонима идентифицирует запись, созданную с помощью вызова setKeyEntry, или созданную с помощью вызова setEntry с PrivateKeyEntry, то возвращается первый элемент цепочки сертификатов в этой записи.
- Параметры:
-
alias- имя псевдонима - Возвращаемое значение:
- сертификат, или
nullесли заданный псевдоним не существует или не содержит сертификата. - Исключения:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
getCreationDate
public final Date getCreationDate(String alias) throws KeyStoreException
- Параметры:
-
alias- имя псевдонима - Возвращает:
- дату создания этой записи или
nullесли данный псевдоним не существует - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
setKeyEntry
public final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreException
Если заданный ключ типа java.security.PrivateKey, он должен сопровождаться цепочкой сертификатов, подтверждающих соответствующий открытый ключ.
Если заданный псевдоним уже существует, информация о хранилище ключей, связанная с ним, перезаписывается заданным ключом (и, возможно, цепочкой сертификатов).
- Параметры:
-
alias- имя псевдонима -
key- ключ, который будет связан с псевдонимом -
password- пароль для защиты ключа -
chain- цепочка сертификатов для соответствующего открытого ключа (требуется только если заданный ключ типаjava.security.PrivateKey). - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено), заданный ключ не может быть защищен или данная операция завершилась неудачно по какой-либо другой причине
setKeyEntry
public final void setKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException
Если защищенный ключ типа java.security.PrivateKey, он должен сопровождаться цепочкой сертификатов, подтверждающих соответствующий открытый ключ. Если реализация хранилища ключей является типа jks, key должен быть закодирован как EncryptedPrivateKeyInfo, как определено в стандарте PKCS #8.
Если заданный псевдоним уже существует, информация о хранилище ключей, связанная с ним, перезаписывается заданным ключом (и, возможно, цепочкой сертификатов).
- Параметры:
-
alias- имя псевдонима -
key- ключ (в защищенном формате) для связывания с псевдонимом -
chain- цепочка сертификатов для соответствующего открытого ключа (полезно только если защищенный ключ типаjava.security.PrivateKey). - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено) или данная операция завершилась неудачно по какой-либо другой причине.
setCertificateEntry
public final void setCertificateEntry(String alias, Certificate cert) throws KeyStoreException
Если заданный псевдоним идентифицирует существующую запись, созданную вызовом setCertificateEntry, или созданную вызовом setEntry с TrustedCertificateEntry, доверенный сертификат в существующей записи перезаписывается заданным сертификатом.
- Параметры:
-
alias- имя псевдонима -
cert- сертификат - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано, или заданный псевдоним уже существует и не идентифицирует запись, содержащую доверенный сертификат, или данная операция завершилась неудачно по какой-либо другой причине.
deleteEntry
public final void deleteEntry(String alias) throws KeyStoreException
- Параметры:
-
alias- имя псевдонима - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано или запись не может быть удалена.
aliases
public final Enumeration<String> aliases() throws KeyStoreException
- Возвращает:
- перечисление имён псевдонимов
- Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
containsAlias
public final boolean containsAlias(String alias) throws KeyStoreException
- Параметры:
-
alias- имя псевдонима - Возвращает:
-
trueесли псевдоним существует,falseв противном случае - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
size
public final int size() throws KeyStoreException
- Возвращает:
- количество записей в этом хранилище ключей
- Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
isKeyEntry
public final boolean isKeyEntry(String alias) throws KeyStoreException
true если запись, идентифицированная данным псевдонимом, была создана вызовом setKeyEntry, или создана вызовом setEntry с PrivateKeyEntry или SecretKeyEntry. - Параметры:
-
alias- псевдоним для проверяемой записи хранилища ключей - Возвращает:
-
trueесли запись, идентифицированная данным псевдонимом, является записью, связанной с ключом,falseв противном случае. - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
isCertificateEntry
public final boolean isCertificateEntry(String alias) throws KeyStoreException
true если запись, идентифицированная данным псевдонимом, была создана вызовом setCertificateEntry, или создана вызовом setEntry с TrustedCertificateEntry. - Параметры:
-
alias- псевдоним для проверяемой записи хранилища ключей - Возвращает:
-
trueесли запись, идентифицированная данным псевдонимом, содержит доверенный сертификат,falseв противном случае. - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
getCertificateAlias
public final String getCertificateAlias(Certificate cert) throws KeyStoreException
Этот метод пытается сопоставить заданный сертификат с каждой записью хранилища ключей. Если рассматриваемая запись была создана вызовом setCertificateEntry, или создана вызовом setEntry с TrustedCertificateEntry, то заданный сертификат сравнивается с сертификатом этой записи.
Если рассматриваемая запись была создана вызовом setKeyEntry, или создана вызовом setEntry с PrivateKeyEntry, то заданный сертификат сравнивается с первым элементом цепочки сертификатов этой записи.
- Параметры:
-
cert- сертификат для сопоставления. - Возвращает:
- имя псевдонима первой записи с совпадающим сертификатом или
nullесли такая запись в этом хранилище ключей отсутствует. - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено).
store
public final void store(OutputStream stream, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
- Параметры:
-
stream- поток вывода, в который сохраняется это хранилище ключей. -
password- пароль для генерации проверки целостности хранилища ключей. Может бытьnull, если хранилище ключей не поддерживает или не требует проверки целостности. - Исключение:
-
KeyStoreException- если хранилище ключей не было инициализировано (загружено). -
IOException- если возникла проблема ввода-вывода с данными -
NoSuchAlgorithmException- если алгоритм проверки целостности данных не найден -
CertificateException- если любой из сертификатов, включенных в данные хранилища ключей, не может быть сохранён
store
public final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter. - Параметры:
-
param-LoadStoreParameterкоторый определяет, как сохранить хранилище ключей, может бытьnull - Исключение:
-
IllegalArgumentException- если заданныйLoadStoreParameterвход не распознан -
KeyStoreException- если хранилище ключей не было инициализировано (загружено) -
IOException- если возникла проблема ввода-вывода с данными -
NoSuchAlgorithmException- если алгоритм проверки целостности данных не найден -
CertificateException- если любой из сертификатов, включенных в данные хранилища ключей, не может быть сохранён -
UnsupportedOperationException- если данная операция не поддерживается - Since:
- 1.5
load
public final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
Может быть указан пароль для разблокировки хранилища ключей (например, хранилище ключей находится на устройстве аппаратного токена) или для проверки целостности данных хранилища ключей. Если пароль не указан для проверки целостности, то проверка целостности не выполняется.
Для создания пустого хранилища ключей или если хранилище ключей не может быть инициализировано из потока, передайте null в качестве stream аргумента.
Обратите внимание, что если это хранилище ключей уже загружено, оно повторно инициализируется и загружается снова из заданного потока ввода.
- Parameters:
-
stream- поток ввода, из которого загружается хранилище ключей, илиnull -
password- пароль, используемый для проверки целостности хранилища ключей, пароль, используемый для разблокировки хранилища ключей, илиnull - Throws:
-
IOException- если возникла проблема с вводом-выводом или форматом данных хранилища ключей, если пароль необходим, но не указан, или если указанный пароль был неверным. Если ошибка вызвана неправильным паролем,causeIOExceptionдолжен бытьUnrecoverableKeyException -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден -
CertificateException- если любой из сертификатов в хранилище ключей не удалось загрузить
load
public final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter. Обратите внимание, что если это KeyStore уже загружено, оно повторно инициализируется и загружается снова из заданного параметра.
- Parameters:
-
param-LoadStoreParameterдля загрузки хранилища ключей, которое может бытьnull - Throws:
-
IllegalArgumentException- если заданныйLoadStoreParameterввод не распознан -
IOException- если возникла проблема с вводом-выводом или форматом данных хранилища ключей. Если ошибка вызвана невернымProtectionParameter(например, неправильный пароль),causeIOExceptionдолжен бытьUnrecoverableKeyException -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден -
CertificateException- если любой из сертификатов в хранилище ключей не удалось загрузить - Since:
- 1.5
getEntry
public final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
- Parameters:
-
alias- получить запись хранилища ключей для этого псевдонима -
protParam-ProtectionParameterдля защитыEntry, который может бытьnull - Returns:
- запись хранилища ключей для указанного псевдонима, или
nullесли такой записи нет - Throws:
-
NullPointerException- еслиaliasnull -
NoSuchAlgorithmException- если алгоритм извлечения записи не найден -
UnrecoverableEntryException- если указанныеprotParamбыли недостаточными или недействительными -
UnrecoverableKeyException- если запись являетсяPrivateKeyEntryилиSecretKeyEntryи указанныйprotParamне содержит информации, необходимой для восстановления ключа (например, неправильный пароль) -
KeyStoreException- если хранилище ключей не было инициализировано (загружено). - Since:
- 1.5
- See Also:
setEntry
public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Entry. Если запись для указанного псевдонима уже существует, она перезаписывается.
- Parameters:
-
alias- сохранить запись хранилища ключей под этим псевдонимом -
entry- сохраняемаяEntry -
protParam-ProtectionParameterдля защитыEntry, который может бытьnull - Throws:
-
NullPointerException- еслиaliasилиentrynull -
KeyStoreException- если хранилище ключей не было инициализировано (загружено), или если эта операция завершается неудачно по какой-либо другой причине - Since:
- 1.5
- See Also:
entryInstanceOf
public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
- Parameters:
-
alias- имя псевдонима -
entryClass- класс записи - Returns:
-
trueесли запись хранилища ключей для указанного псевдонима является экземпляром или подклассом указанногоentryClass,falseв противном случае - Throws:
-
NullPointerException- еслиaliasилиentryClassnull -
KeyStoreException- если хранилище ключей не было инициализировано (загружено) - Since:
- 1.5
getInstance
public static final KeyStore getInstance(File file, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Может быть указан пароль для разблокировки хранилища ключей (например, хранилище ключей находится на устройстве аппаратного токена) или для проверки целостности данных хранилища ключей. Если пароль не указан для проверки целостности, то проверка целостности не выполняется.
Этот метод обходит список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного поставщика. Для каждой реализации хранилища ключей, поддерживаемой поставщиком, вызывается метод engineProbe для определения, поддерживает ли она указанное хранилище. Возвращается новый объект KeyStore, который инкапсулирует реализацию KeyStoreSpi от первого поставщика, который поддерживает указанный файл.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Parameters:
-
file- файл хранилища ключей -
password- пароль хранилища ключей, который может бытьnull - Returns:
- объект хранилища ключей, загруженный данными хранилища ключей
- Throws:
-
KeyStoreException- если ни один поставщик не поддерживает реализациюKeyStoreSpiдля указанного файла хранилища ключей. -
IOException- если возникла проблема с вводом-выводом или форматом данных хранилища ключей, если пароль необходим, но не указан, или если указанный пароль был неверным. Если ошибка вызвана неправильным паролем,causeIOExceptionдолжен бытьUnrecoverableKeyException. -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден. -
CertificateException- если любой из сертификатов в хранилище ключей не удалось загрузить. -
IllegalArgumentException- если файл не существует или не ссылается на обычный файл. -
NullPointerException- если файлnull. -
SecurityException- если существует менеджер безопасности, и его методSecurityManager.checkRead(java.io.FileDescriptor)запрещает доступ для чтения к указанному файлу. - Since:
- 9
- See Also:
getInstance
public static final KeyStore getInstance(File file, KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter, который определяет, как разблокировать данные хранилища ключей или выполнить проверку целостности. Этот метод обходит список зарегистрированных системных поставщиков, начиная с предпочтительного. Для каждой KeyStoreSpi реализации, поддерживаемой поставщиком, вызывается метод engineProbe, чтобы определить, поддерживает ли она указанное хранилище. Возвращается новый KeyStore объект, который инкапсулирует KeyStoreSpi реализацию от первого поставщика, который поддерживает указанный файл.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Parameters:
-
file- файл хранилища ключей -
param-LoadStoreParameter, который определяет, как загрузить хранилище ключей, которое может бытьnull - Returns:
- объект хранилища ключей, загруженный данными хранилища ключей
- Throws:
-
KeyStoreException- если ни один поставщик не поддерживаетKeyStoreSpiреализацию для указанного файла хранилища ключей. -
IOException- если возникла проблема с вводом/выводом или форматом данных хранилища ключей. Если ошибка вызвана неправильнымProtectionParameter(например, неправильным паролем),causeобъектаIOExceptionдолжен быть объектомUnrecoverableKeyException. -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден. -
CertificateException- если не удалось загрузить какой-либо из сертификатов в хранилище ключей. -
IllegalArgumentException- если файл не существует или не ссылается на обычный файл, или если параметр не распознан. -
NullPointerException- если файлnull. -
SecurityException- если существует менеджер безопасности, и его методSecurityManager.checkRead(java.io.FileDescriptor)отказывает в доступе для чтения к указанному файлу. - Since:
- 9
- See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/KeyStore.html