Spec-Zone.ru › OpenJDK 27

Класс KeyStore

java.lang.Object
java.security.KeyStore
public class KeyStore extends Object
Этот класс представляет собой хранилище криптографических ключей и сертификатов.

KeyStore управляет различными типами записей. Каждый тип записи реализует интерфейс KeyStore.Entry. Предусмотрены три основные реализации KeyStore.Entry:

  • KeyStore.PrivateKeyEntry

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

    Закрытые ключи и цепочки сертификатов используются сущностью для собственной аутентификации. К таким случаям аутентификации относятся организации, распространяющие программное обеспечение и подписывающие JAR-файлы при выпуске и/или лицензировании программного обеспечения.

  • KeyStore.SecretKeyEntry

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

  • KeyStore.TrustedCertificateEntry

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

    Запись этого типа можно использовать для аутентификации других сторон.

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

Чувствительность псевдонимов к регистру зависит от реализации. Во избежание проблем рекомендуется не использовать в 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
Этот тип описан в разделе KeyStore спецификации стандартных имен алгоритмов безопасности Java. В документации к выпуску вашей реализации указано, поддерживаются ли какие-либо другие типы.
С версии:
1.2
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • PrivateKey
  • SecretKey
  • Certificate

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  KeyStore.Builder
Описание объекта KeyStore, экземпляр которого будет создан.
static class  KeyStore.CallbackHandlerProtection
ProtectionParameter, инкапсулирующий CallbackHandler.
static interface  KeyStore.Entry
Маркерный интерфейс для типов записей KeyStore.
static interface  KeyStore.LoadStoreParameter
Маркерный интерфейс для параметров load и store>KeyStore.
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.

Краткое описание конструкторов

KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
Модификатор Конструктор Описание
protected
Создает объект KeyStore указанного типа и инкапсулирует в нем указанную реализацию поставщика (объект SPI).

Краткое описание методов

Модификатор и тип Метод Описание
final Enumeration<String> aliases()
Перечисляет все имена псевдонимов этого хранилища ключей.
final boolean containsAlias(String alias)
Проверяет, существует ли указанный псевдоним в этом хранилище ключей.
final void deleteEntry(String alias)
Удаляет из этого хранилища ключей запись, обозначенную указанным псевдонимом.
final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
Определяет, является ли Entry хранилища ключей для указанного alias экземпляром указанного entryClass или его подклассом.
final Set<KeyStore.Entry.Attribute> getAttributes(String alias)
Получает атрибуты, связанные с указанным псевдонимом.
final Certificate getCertificate(String alias)
Возвращает сертификат, связанный с указанным псевдонимом.
final String getCertificateAlias(Certificate cert)
Возвращает имя (псевдоним) первой записи хранилища ключей, сертификат которой соответствует указанному сертификату.
final Certificate[] getCertificateChain(String alias)
Возвращает цепочку сертификатов, связанную с указанным псевдонимом.
final Date getCreationDate(String alias)
Возвращает дату создания записи, обозначенной указанным псевдонимом.
final Instant getCreationInstant(String alias)
Возвращает момент времени, когда была создана запись, обозначенная указанным псевдонимом.
static final String getDefaultType()
Возвращает тип хранилища ключей по умолчанию, заданный свойством безопасности keystore.type, или строку "pkcs12", если такое свойство отсутствует.
final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam)
Получает Entry хранилища ключей для указанного псевдонима с указанным параметром защиты.
static final KeyStore getInstance(File file, char[] password)
Возвращает загруженный объект хранилища ключей соответствующего типа.
static final KeyStore getInstance(File file, KeyStore.LoadStoreParameter param)
Возвращает загруженный объект хранилища ключей соответствующего типа.
static KeyStore getInstance(String type)
Возвращает объект KeyStore указанного типа.
static KeyStore getInstance(String type, String provider)
Возвращает объект KeyStore указанного типа.
static KeyStore getInstance(String type, Provider provider)
Возвращает объект KeyStore указанного типа.
final Key getKey(String alias, char[] password)
Возвращает ключ, связанный с указанным псевдонимом, используя указанный пароль для его восстановления.
final Provider getProvider()
Возвращает поставщика этого хранилища ключей.
final String getType()
Возвращает тип этого хранилища ключей.
final boolean isCertificateEntry(String alias)
Возвращает true, если запись, обозначенная указанным псевдонимом, была создана вызовом setCertificateEntry или вызовом setEntry с параметром TrustedCertificateEntry.
final boolean isKeyEntry(String alias)
Возвращает true, если запись, обозначенная указанным псевдонимом, была создана вызовом setKeyEntry или вызовом setEntry с параметром PrivateKeyEntry или SecretKeyEntry.
final void load(InputStream stream, char[] password)
Загружает это хранилище ключей из указанного входного потока.
final void load(KeyStore.LoadStoreParameter param)
Загружает это хранилище ключей с помощью указанного LoadStoreParameter.
final void setCertificateEntry(String alias, Certificate cert)
Назначает указанный доверенный сертификат указанному псевдониму.
final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
Сохраняет Entry хранилища ключей под указанным псевдонимом.
final void setKeyEntry(String alias, byte[] key, Certificate[] chain)
Назначает указанный ключ (который уже защищен) указанному псевдониму.
final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
Назначает указанный ключ указанному псевдониму, защищая его указанным паролем.
final int size()
Возвращает количество записей в этом хранилище ключей.
final void store(OutputStream stream, char[] password)
Сохраняет это хранилище ключей в указанном выходном потоке и защищает его целостность указанным паролем.
final void store(KeyStore.LoadStoreParameter param)
Сохраняет это хранилище ключей с помощью указанного LoadStoreParameter.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

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 Reference Implementation дополнительно использует
  • свойство jdk.security.provider.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного типа хранилища ключей. Этот порядок может отличаться от порядка поставщиков, возвращаемых методом Security.getProviders().
  • свойство jdk.crypto.disabledAlgorithms Security, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
type - тип хранилища ключей. Сведения о стандартных типах хранилищ ключей см. в разделе KeyStore документа Спецификация стандартных имен алгоритмов Java Security.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
KeyStoreException - если ни один поставщик не поддерживает реализацию KeyStoreSpi для указанного типа
NullPointerException - если type имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
Возвращает объект KeyStore указанного типа.

Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

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

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.crypto.disabledAlgorithms Security, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
type - тип хранилища ключей. Сведения о стандартных типах хранилищ ключей см. в разделе KeyStore документа Спецификация стандартных имен алгоритмов Java Security.
provider - имя поставщика.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
IllegalArgumentException - если имя поставщика равно null или является пустым
KeyStoreException - если реализация KeyStoreSpi для указанного типа недоступна у указанного поставщика
NoSuchProviderException - если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException - если type имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
Возвращает объект KeyStore указанного типа.

Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi указанного объекта поставщика. Обратите внимание, что указанный объект поставщика не обязательно должен быть зарегистрирован в списке поставщиков.

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.crypto.disabledAlgorithms Security, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
type - тип хранилища ключей. Сведения о стандартных типах хранилищ ключей см. в разделе KeyStore документа Спецификация стандартных имен алгоритмов Java Security.
provider - поставщик.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
IllegalArgumentException - если указанный поставщик имеет значение null
KeyStoreException - если реализация KeyStoreSpi для указанного типа недоступна у указанного объекта Provider
NullPointerException - если type имеет значение null
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getDefaultType

public static final String getDefaultType()
Возвращает тип хранилища ключей по умолчанию, заданный свойством безопасности keystore.type, или строку "pkcs12", если такое свойство отсутствует.

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

Тип хранилища ключей по умолчанию можно изменить, задав в свойстве безопасности keystore.type значение желаемого типа хранилища ключей.

Возвращает:
тип хранилища ключей по умолчанию, заданный свойством безопасности keystore.type, или строку "pkcs12", если такое свойство отсутствует.
См. также:
  • свойства безопасности

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
Начиная с:
18

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
Возвращает дату создания записи, обозначенной указанным псевдонимом.

Рекомендуется использовать вместо этого метод getCreationInstant(String).

Параметры:
alias - имя псевдонима
Возвращает:
дату создания этой записи или null, если указанный псевдоним не существует
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

getCreationInstant

public final Instant getCreationInstant(String alias) throws KeyStoreException
Возвращает момент времени создания записи, обозначенной указанным псевдонимом.
Параметры:
alias - имя псевдонима
Возвращает:
момент времени создания записи, обозначенной указанным псевдонимом, или null, если указанный псевдоним не существует
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено)
Начиная с:
27

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 - если эта операция не поддерживается
Начиная с:
1.5

load

public final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
Загружает это хранилище ключей из указанного входного потока.

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

Чтобы создать пустое хранилище ключей или если хранилище ключей нельзя инициализировать из потока, передайте null в качестве аргумента stream.

Обратите внимание: если это хранилище ключей уже было загружено, оно будет повторно инициализировано и загружено из указанного входного потока.

Параметры:
stream - входной поток, из которого загружается хранилище ключей, или null
password - пароль для проверки целостности хранилища ключей, пароль для разблокировки хранилища ключей или null
Исключения:
IOException - если возникла ошибка ввода-вывода или форматирования данных хранилища ключей, если пароль необходим, но не указан, либо если указан неверный пароль. Если ошибка вызвана неверным паролем, метод cause объекта IOException должен возвращать UnrecoverableKeyException
NoSuchAlgorithmException - если не удалось найти алгоритм проверки целостности хранилища ключей
CertificateException - если не удалось загрузить какой-либо сертификат из хранилища ключей

load

public final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
Загружает это хранилище ключей с использованием указанного LoadStoreParameter.

Обратите внимание: если это KeyStore уже было загружено, оно будет повторно инициализировано и загружено с использованием указанного параметра.

Параметры:
param - LoadStoreParameter, указывающий способ загрузки хранилища ключей; может иметь значение null
Исключения:
IllegalArgumentException - если указанный входной параметр LoadStoreParameter не распознан
IOException - если возникла ошибка ввода-вывода или форматирования данных хранилища ключей. Если ошибка вызвана неверным ProtectionParameter (например, неверным паролем), метод cause объекта IOException должен возвращать UnrecoverableKeyException
NoSuchAlgorithmException - если не удалось найти алгоритм проверки целостности хранилища ключей
CertificateException - если не удалось загрузить какой-либо сертификат из хранилища ключей
Начиная с:
1.5

getEntry

public final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Получает запись Entry хранилища ключей для указанного псевдонима с указанным параметром защиты.
Параметры:
alias - получить запись Entry хранилища ключей для этого псевдонима
protParam - ProtectionParameter, используемый для защиты Entry; может иметь значение null
Возвращает:
запись Entry хранилища ключей для указанного псевдонима или null, если такой записи нет
Исключения:
NullPointerException - если alias имеет значение null
NoSuchAlgorithmException - если не удалось найти алгоритм восстановления записи
UnrecoverableEntryException - если указанный protParam недостаточен или недействителен
UnrecoverableKeyException - если запись является PrivateKeyEntry или SecretKeyEntry, а указанный protParam не содержит сведений, необходимых для восстановления ключа (например, указан неверный пароль)
KeyStoreException - если хранилище ключей не было инициализировано (загружено).
Начиная с:
1.5
См. также:
  • setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)

setEntry

public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Сохраняет запись Entry хранилища ключей под указанным псевдонимом. Параметр защиты используется для защиты Entry.

Если запись с указанным псевдонимом уже существует, она заменяется.

Параметры:
alias - сохранить запись Entry хранилища ключей под этим псевдонимом
entry - Entry, которую нужно сохранить
protParam - ProtectionParameter, используемый для защиты Entry; может иметь значение null
Исключения:
NullPointerException - если alias или entry имеет значение null
KeyStoreException - если хранилище ключей не было инициализировано (загружено) или операция завершилась с другой ошибкой
Начиная с:
1.5
См. также:
  • getEntry(String, KeyStore.ProtectionParameter)

entryInstanceOf

public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
Определяет, является ли Entry хранилища ключей для указанного alias экземпляром указанного entryClass или его подклассом.
Параметры:
alias - имя псевдонима
entryClass - класс записи
Возвращает:
true, если Entry хранилища ключей для указанного alias является экземпляром указанного entryClass или его подклассом; в противном случае — false
Вызывает:
NullPointerException - если alias или entryClass равно null
KeyStoreException - если хранилище ключей не было инициализировано (загружено)
С версии:
1.5

getInstance

public static final KeyStore getInstance(File file, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Возвращает загруженный объект хранилища ключей соответствующего типа. Сначала тип хранилища ключей определяется путем проверки указанного файла. Затем создается объект хранилища ключей и загружается с использованием данных из этого файла.

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

Этот метод перебирает список зарегистрированных поставщиков безопасности , начиная с наиболее предпочтительного поставщика. Для каждой реализации KeyStoreSpi, поддерживаемой поставщиком, он вызывает метод engineProbe, чтобы определить, поддерживает ли она указанное хранилище ключей. Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi первого поставщика, поддерживающего указанный файл.

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

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.crypto.disabledAlgorithms Security, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. Запрещенный тип будет пропущен.
Параметры:
file - файл хранилища ключей
password - пароль хранилища ключей, который может быть null
Возвращает:
объект хранилища ключей, загруженный данными хранилища ключей
Вызывает:
KeyStoreException - если ни один поставщик не поддерживает реализацию KeyStoreSpi для указанного файла хранилища ключей.
IOException - если возникла проблема ввода-вывода или форматирования данных хранилища ключей, если требуется пароль, но он не указан, или если указанный пароль неверен. Если ошибка вызвана неверным паролем, объект cause исключения IOException должен быть экземпляром UnrecoverableKeyException.
NoSuchAlgorithmException - если алгоритм, используемый для проверки целостности хранилища ключей, не найден.
CertificateException - если не удалось загрузить какой-либо сертификат из хранилища ключей.
IllegalArgumentException - если файл не существует или не является обычным файлом.
NullPointerException - если файл является null.
С версии:
9
См. также:
  • Provider

getInstance

public static final KeyStore getInstance(File file, KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Возвращает загруженный объект хранилища ключей соответствующего типа. Сначала тип хранилища ключей определяется путем проверки указанного файла. Затем создается объект хранилища ключей и загружается с использованием данных из этого файла. Можно передать LoadStoreParameter, указывающий, как разблокировать данные хранилища ключей или выполнить проверку целостности.

Этот метод перебирает список зарегистрированных поставщиков безопасности , начиная с наиболее предпочтительного поставщика. Для каждой реализации KeyStoreSpi, поддерживаемой поставщиком, он вызывает метод engineProbe, чтобы определить, поддерживает ли она указанное хранилище ключей. Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi первого поставщика, поддерживающего указанный файл.

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

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.crypto.disabledAlgorithms Security, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. Запрещенный тип будет пропущен.
Параметры:
file - файл хранилища ключей
param - LoadStoreParameter, указывающий, как загрузить хранилище ключей; значение может быть null
Возвращает:
объект хранилища ключей, загруженный данными хранилища ключей
Вызывает:
KeyStoreException - если ни один поставщик не поддерживает реализацию KeyStoreSpi для указанного файла хранилища ключей.
IOException - если возникла проблема ввода-вывода или форматирования данных хранилища ключей. Если ошибка вызвана неверным ProtectionParameter (например, неверным паролем), объект cause исключения IOException должен быть экземпляром UnrecoverableKeyException.
NoSuchAlgorithmException - если алгоритм, используемый для проверки целостности хранилища ключей, не найден.
CertificateException - если не удалось загрузить какой-либо сертификат из хранилища ключей.
IllegalArgumentException - если файл не существует или не является обычным файлом либо если параметр не распознан.
NullPointerException - если файл является null.
С версии:
9
См. также:
  • Provider

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API