Класс 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
- С версии:
- 1.2
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
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. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает объект KeyStore указанного типа и инкапсулирует в нем указанную реализацию поставщика (объект SPI). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final Enumeration |
aliases() |
Перечисляет все имена псевдонимов этого хранилища ключей. |
final boolean |
containsAlias |
Проверяет, существует ли указанный псевдоним в этом хранилище ключей. |
final void |
deleteEntry |
Удаляет из этого хранилища ключей запись, обозначенную указанным псевдонимом. |
final boolean |
entryInstanceOf |
Определяет, является ли Entry хранилища ключей для указанного alias экземпляром указанного entryClass или его подклассом. |
final Set |
getAttributes |
Получает атрибуты, связанные с указанным псевдонимом. |
final Certificate |
getCertificate |
Возвращает сертификат, связанный с указанным псевдонимом. |
final String |
getCertificateAlias |
Возвращает имя (псевдоним) первой записи хранилища ключей, сертификат которой соответствует указанному сертификату. |
final Certificate[] |
getCertificateChain |
Возвращает цепочку сертификатов, связанную с указанным псевдонимом. |
final Date |
getCreationDate |
Возвращает дату создания записи, обозначенной указанным псевдонимом. |
final Instant |
getCreationInstant |
Возвращает момент времени, когда была создана запись, обозначенная указанным псевдонимом. |
static final String |
getDefaultType() |
Возвращает тип хранилища ключей по умолчанию, заданный свойством безопасности keystore.type, или строку "pkcs12", если такое свойство отсутствует. |
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() |
Возвращает поставщика этого хранилища ключей. |
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. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
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 |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова 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.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного типа хранилища ключей. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - свойство
jdk.crypto.disabledAlgorithmsSecurity, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
- свойство
- Параметры:
-
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().
- Примечание по реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurity, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
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 указанного объекта поставщика. Обратите внимание, что указанный объект поставщика не обязательно должен быть зарегистрирован в списке поставщиков.
- Примечание по реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurity, чтобы определить, разрешен ли указанный тип хранилища ключей. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
type- тип хранилища ключей. Сведения о стандартных типах хранилищ ключей см. в разделе KeyStore документа Спецификация стандартных имен алгоритмов Java Security. -
provider- поставщик. - Возвращает:
- объект хранилища ключей указанного типа
- Исключения:
-
IllegalArgumentException- если указанный поставщик имеет значениеnull -
KeyStoreException- если реализацияKeyStoreSpiдля указанного типа недоступна у указанного объектаProvider -
NullPointerException- еслиtypeимеет значениеnull - Начиная с:
- 1.4
- Внешние спецификации
- См. также:
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
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
- См. также:
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.disabledAlgorithmsSecurity, чтобы определить, разрешен ли указанный тип хранилища ключей. Если заданоjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. Запрещенный тип будет пропущен. - Параметры:
-
file- файл хранилища ключей -
password- пароль хранилища ключей, который может бытьnull - Возвращает:
- объект хранилища ключей, загруженный данными хранилища ключей
- Вызывает:
-
KeyStoreException- если ни один поставщик не поддерживает реализациюKeyStoreSpiдля указанного файла хранилища ключей. -
IOException- если возникла проблема ввода-вывода или форматирования данных хранилища ключей, если требуется пароль, но он не указан, или если указанный пароль неверен. Если ошибка вызвана неверным паролем, объектcauseисключенияIOExceptionдолжен быть экземпляромUnrecoverableKeyException. -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден. -
CertificateException- если не удалось загрузить какой-либо сертификат из хранилища ключей. -
IllegalArgumentException- если файл не существует или не является обычным файлом. -
NullPointerException- если файл являетсяnull. - С версии:
- 9
- См. также:
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.disabledAlgorithmsSecurity, чтобы определить, разрешен ли указанный тип хранилища ключей. Если заданоjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. Запрещенный тип будет пропущен. - Параметры:
-
file- файл хранилища ключей -
param-LoadStoreParameter, указывающий, как загрузить хранилище ключей; значение может бытьnull - Возвращает:
- объект хранилища ключей, загруженный данными хранилища ключей
- Вызывает:
-
KeyStoreException- если ни один поставщик не поддерживает реализациюKeyStoreSpiдля указанного файла хранилища ключей. -
IOException- если возникла проблема ввода-вывода или форматирования данных хранилища ключей. Если ошибка вызвана невернымProtectionParameter(например, неверным паролем), объектcauseисключенияIOExceptionдолжен быть экземпляромUnrecoverableKeyException. -
NoSuchAlgorithmException- если алгоритм, используемый для проверки целостности хранилища ключей, не найден. -
CertificateException- если не удалось загрузить какой-либо сертификат из хранилища ключей. -
IllegalArgumentException- если файл не существует или не является обычным файлом либо если параметр не распознан. -
NullPointerException- если файл являетсяnull. - С версии:
- 9
- См. также:
© 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.