Spec-Zone .ru
спецификации, руководства, описания, API
|
public class KeyStore extends Object
A KeyStore
управляет различными типами записей. Каждый тип записи реализует KeyStore.Entry
интерфейс. Три основной KeyStore.Entry
реализации обеспечиваются:
Этот тип записи содержит криптографическое PrivateKey
, который дополнительно сохранен в защищенном формате, чтобы предотвратить несанкционированный доступ. Это также сопровождается цепочкой сертификата для соответствующего открытого ключа.
Закрытые ключи и цепочки сертификата используются данным объектом для самоаутентификации. Приложения для этой аутентификации включают организации распределения программного обеспечения, которые подписывают файлы JAR как часть выпуска и/или лицензирования программного обеспечения.
Этот тип записи содержит криптографическое SecretKey
, который дополнительно сохранен в защищенном формате, чтобы предотвратить несанкционированный доступ.
Этот тип записи содержит единственный открытый ключ Certificate
принадлежность другой стороне. Это вызывают доверяемым сертификатом, потому что keystore владелец полагает, что открытый ключ в сертификате действительно принадлежит идентификационным данным, идентифицированным предметом (владелец) сертификата.
Этот тип записи может использоваться, чтобы аутентифицировать другие стороны.
Каждая запись в keystore идентифицируется строкой "псевдонима". В случае закрытых ключей и их связанных цепочек сертификата, эти строки различают среди различных путей, которыми объект может аутентифицировать себя. Например, объект может аутентифицировать себя, используя различные центры сертификации, или используя различные алгоритмы с открытым ключом.
Являются ли псевдонимы чувствительными к регистру, является зависящим от реализации. Чтобы избежать проблем, рекомендуется не использовать псевдонимы в KeyStore, которые только отличаются в случае, если.
Являются ли keystores персистентными, и механизмы, используемые keystore, если это является персистентным, не определяются здесь. Это позволяет использование множества методов для того, чтобы защитить чувствительный (например, частный или секретный) ключи. Смарт-карты или другие интегрированные криптографические механизмы (SafeKeyper) являются одной опцией, и более простые механизмы, такие как файлы могут также использоваться (во множестве форматов).
Типичные способы запросить объект KeyStore включают доверие типу по умолчанию и обеспечение определенного типа keystore.
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());Система возвратит keystore реализацию для типа по умолчанию.
KeyStore ks = KeyStore.getInstance("JKS");Система возвратит самую привилегированную реализацию указанного типа keystore, доступного в среде.
Прежде, чем к keystore можно получить доступ, это должно быть loaded
.
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); // get user password and file input stream char[] password = getPassword(); java.io.FileInputStream fis = null; try { fis = new java.io.FileInputStream("keyStoreName"); ks.load(fis, password); } finally { if (fis != null) { fis.close(); } }Создать пустой keystore использование вышеупомянутого
load
метод, передача null
как InputStream
параметр. Как только keystore был загружен, возможно считать существующие записи из keystore, или записать новые записи в keystore:
KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection(password); // 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 java.io.FileOutputStream fos = null; try { fos = new java.io.FileOutputStream("newKeyStoreName"); ks.store(fos, password); } finally { if (fos != null) { fos.close(); } }Отметьте, что, хотя тот же самый пароль может использоваться, чтобы загрузить keystore, защитить запись с закрытым ключом, защитить запись секретного ключа, и сохранить keystore (как показывается в примере кода выше), различные пароли или другие параметры защиты могут также использоваться.
Каждая реализация платформы Java обязана поддерживать следующий стандарт KeyStore
введите:
PrivateKey
, SecretKey
, Certificate
Модификатор и Тип | Класс и Описание |
---|---|
static class |
KeyStore. Разработчик
Описание будущим образом инстанцированного объекта KeyStore.
|
static class |
KeyStore. CallbackHandlerProtection
ProtectionParameter, инкапсулирующий CallbackHandler.
|
static interface |
KeyStore. Запись
Интерфейс маркера для
KeyStore типы записи. |
static interface |
KeyStore. LoadStoreParameter
|
static class |
KeyStore. PasswordProtection
Основанная на пароле реализация
ProtectionParameter . |
static class |
KeyStore. PrivateKeyEntry
A
KeyStore запись, которая содержит a PrivateKey и соответствующая цепочка сертификата. |
static interface |
KeyStore. ProtectionParameter
Интерфейс маркера для keystore параметров защиты.
|
static class |
KeyStore. SecretKeyEntry
A
KeyStore запись, которая содержит a SecretKey . |
static class |
KeyStore. TrustedCertificateEntry
A
KeyStore запись, которая содержит доверяемое Certificate . |
Модификатор | Конструктор и Описание |
---|---|
protected |
KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
Создает объект KeyStore данного типа, и инкапсулирует данную реализацию провайдера (объект SPI) в этом.
|
Модификатор и Тип | Метод и Описание |
---|---|
Enumeration<String> |
aliases()
Списки все имена псевдонима этого keystore.
|
boolean |
containsAlias(String alias)
Проверки, если данный псевдоним существует в этом keystore.
|
void |
deleteEntry(String alias)
Удаляет запись, идентифицированную данным псевдонимом от этого keystore.
|
boolean |
entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
Определяет если keystore
Entry для указанного alias экземпляр или подкласс указанного entryClass . |
Сертификат |
getCertificate(String alias)
Возвращает сертификат, связанный с данным псевдонимом.
|
Строка |
getCertificateAlias(Certificate cert)
Возвращает (псевдоним) имя первой keystore записи, сертификат которой соответствует данный сертификат.
|
Сертификат[] |
getCertificateChain(String alias)
Возвращает цепочку сертификата, связанную с данным псевдонимом.
|
Дата |
getCreationDate(String alias)
Возвращает дату создания записи, идентифицированной данным псевдонимом.
|
static String |
getDefaultType()
Возвращает значение по умолчанию keystore тип как определено в файле свойств безопасности Java, или строке "jks" (акроним для "Java keystore"), если никакое такое свойство не существует.
|
KeyStore. Запись |
getEntry(String alias, KeyStore.ProtectionParameter protParam)
Получает keystore
Entry для указанного псевдонима с указанным параметром защиты. |
static KeyStore |
getInstance(String type)
Возвращает keystore объект указанного типа.
|
static KeyStore |
getInstance(String type, Provider provider)
Возвращает keystore объект указанного типа.
|
static KeyStore |
getInstance(String type, String provider)
Возвращает keystore объект указанного типа.
|
Ключ |
getKey(String alias, char[] password)
Возвращает ключ, связанный с данным псевдонимом, используя данный пароль, чтобы восстановить это.
|
Провайдер |
getProvider()
Возвращает провайдера этого keystore.
|
Строка |
getType()
Возвращает тип этого keystore.
|
boolean |
isCertificateEntry(String alias)
Возвращает true, если запись, идентифицированная данным псевдонимом, создавалась звонком
setCertificateEntry , или создаваемый звонком setEntry с a TrustedCertificateEntry . |
boolean |
isKeyEntry(String alias)
Возвращает true, если запись, идентифицированная данным псевдонимом, создавалась звонком
setKeyEntry , или создаваемый звонком setEntry с a PrivateKeyEntry или a SecretKeyEntry . |
void |
load(InputStream stream, char[] password)
Загрузки этот KeyStore от данного входного потока.
|
void |
load(KeyStore.LoadStoreParameter param)
Загрузки этот keystore использование данного
LoadStoreParameter . |
void |
setCertificateEntry(String alias, Certificate cert)
Присваивает данный доверенный сертификат данному псевдониму.
|
void |
setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
Сохраняет keystore
Entry под указанным псевдонимом. |
void |
setKeyEntry(String alias, byte[] key, Certificate[] chain)
Присваивает данный ключ (который был уже защищен) к данному псевдониму.
|
void |
setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
Присваивает данный ключ данному псевдониму, защищая это с данным паролем.
|
int |
size()
Получает число записей в этом keystore.
|
void |
store(KeyStore.LoadStoreParameter param)
Хранилища этот keystore использование данного
LoadStoreParameter . |
void |
store(OutputStream stream, char[] password)
Хранилища этот keystore к данному потоку вывода, и защищают его целостность с данным паролем.
|
protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
keyStoreSpi
- реализация провайдера.provider
- провайдер.type
- тип keystore.public static KeyStore getInstance(String type) throws KeyStoreException
Этот метод пересекает список зарегистрированных поставщиков систем обеспечения безопасности, запускающихся с самого привилегированного Провайдера. Возвращается новый объект KeyStore инкапсуляция реализации KeyStoreSpi от первого Провайдера, который поддерживает указанный тип.
Отметьте, что список зарегистрированных провайдеров может быть получен через Security.getProviders()
метод.
type
- тип keystore. См. раздел KeyStore в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандарте keystore типы.KeyStoreException
- если никакой Провайдер не поддерживает реализацию KeyStoreSpi для указанного типа.Provider
public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
Возвращается новый объект KeyStore инкапсуляция реализации KeyStoreSpi от указанного провайдера. Указанный провайдер должен быть зарегистрирован в списке поставщика систем обеспечения безопасности.
Отметьте, что список зарегистрированных провайдеров может быть получен через Security.getProviders()
метод.
type
- тип keystore. См. раздел KeyStore в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандарте keystore типы.provider
- имя провайдера.KeyStoreException
- если реализация KeyStoreSpi для указанного типа не доступна от указанного провайдера.NoSuchProviderException
- если указанный провайдер не регистрируется в списке поставщика систем обеспечения безопасности.IllegalArgumentException
- если имя провайдера является нулем или пустой.Provider
public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
Возвращается новый объект KeyStore инкапсуляция реализации KeyStoreSpi от указанного объекта Провайдера. Отметьте, что указанный объект Провайдера не должен быть зарегистрирован в списке провайдера.
type
- тип keystore. См. раздел KeyStore в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандарте keystore типы.provider
- провайдер.KeyStoreException
- если реализация KeyStoreSpi для указанного типа не доступна от указанного объекта Провайдера.IllegalArgumentException
- если указанный провайдер является нулем.Provider
public static final String getDefaultType()
Значение по умолчанию keystore тип может использоваться приложениями, которые не хотят использовать трудно кодированный тип keystore, вызывая один из getInstance
методы, и хотят обеспечить значение по умолчанию keystore тип в случае, если пользователь не определяет его собственное.
Значение по умолчанию keystore тип может быть изменено, устанавливая значение "keystore.type" свойства безопасности (в файле свойств безопасности Java) к требуемому типу keystore.
public final Provider getProvider()
public final String getType()
public final Key getKey(String alias, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
setKeyEntry
, или звонком setEntry
с a PrivateKeyEntry
или SecretKeyEntry
.alias
- имя псевдонимаpassword
- пароль для того, чтобы восстановить ключKeyStoreException
- если keystore не был инициализирован (загруженный).NoSuchAlgorithmException
- если алгоритм для того, чтобы восстановить ключ не может быть найденUnrecoverableKeyException
- если ключ не может быть восстановлен (например, данный пароль является неправильным).public final Certificate[] getCertificateChain(String alias) throws KeyStoreException
setKeyEntry
, или звонком setEntry
с a PrivateKeyEntry
.alias
- имя псевдонимаKeyStoreException
- если keystore не был инициализирован (загруженный).public final Certificate getCertificate(String alias) throws KeyStoreException
Если данное имя псевдонима идентифицирует запись, создаваемую звонком setCertificateEntry
, или создаваемый звонком setEntry
с a TrustedCertificateEntry
, тогда доверяемый сертификат, содержавшийся в той записи, возвращается.
Если данное имя псевдонима идентифицирует запись, создаваемую звонком setKeyEntry
, или создаваемый звонком setEntry
с a PrivateKeyEntry
, тогда первый элемент цепочки сертификата в той записи возвращается.
alias
- имя псевдонимаKeyStoreException
- если keystore не был инициализирован (загруженный).public final Date getCreationDate(String alias) throws KeyStoreException
alias
- имя псевдонимаKeyStoreException
- если keystore не был инициализирован (загруженный).public final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreException
Если данный ключ имеет тип java.security.PrivateKey
, это должно сопровождаться цепочкой сертификата сертификация соответствующего открытого ключа.
Если данный псевдоним уже существует, keystore информация, связанная с ним, переопределяется данным ключом (и возможно цепочка сертификата).
alias
- имя псевдонимаkey
- ключ, который будет связан с псевдонимомpassword
- пароль, чтобы защитить ключchain
- цепочка сертификата для соответствующего открытого ключа (только потребовал, если данный ключ имеет тип java.security.PrivateKey
).KeyStoreException
- если keystore не был инициализирован (загруженный), данный ключ не может быть защищен, или эта работа сбои по некоторой другой причинеpublic final void setKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException
Если защищенный ключ имеет тип java.security.PrivateKey
, это должно сопровождаться цепочкой сертификата сертификация соответствующего открытого ключа. Если базовая keystore реализация имеет тип jks
, key
должен быть закодирован как EncryptedPrivateKeyInfo
как определено в PKCS #8 стандарт.
Если данный псевдоним уже существует, keystore информация, связанная с ним, переопределяется данным ключом (и возможно цепочка сертификата).
alias
- имя псевдонимаkey
- ключ (в защищенном формате), чтобы быть связанным с псевдонимомchain
- цепочка сертификата для соответствующего открытого ключа (только полезный, если защищенный ключ имеет тип java.security.PrivateKey
).KeyStoreException
- если keystore не был инициализирован (загруженный), или если эта работа перестала работать по некоторой другой причине.public final void setCertificateEntry(String alias, Certificate cert) throws KeyStoreException
Если данный псевдоним идентифицирует существующую запись, создаваемую звонком setCertificateEntry
, или создаваемый звонком setEntry
с a TrustedCertificateEntry
, доверяемый сертификат в существующей записи переопределяется данным сертификатом.
alias
- имя псевдонимаcert
- сертификатKeyStoreException
- если keystore не был инициализирован, или данный псевдоним уже существует и не идентифицирует запись, содержащую доверяемый сертификат, или эту работу сбои по некоторой другой причине.public final void deleteEntry(String alias) throws KeyStoreException
alias
- имя псевдонимаKeyStoreException
- если keystore не был инициализирован, или если запись не может быть удалена.public final Enumeration<String> aliases() throws KeyStoreException
KeyStoreException
- если keystore не был инициализирован (загруженный).public final boolean containsAlias(String alias) throws KeyStoreException
alias
- имя псевдонимаKeyStoreException
- если keystore не был инициализирован (загруженный).public final int size() throws KeyStoreException
KeyStoreException
- если keystore не был инициализирован (загруженный).public final boolean isKeyEntry(String alias) throws KeyStoreException
setKeyEntry
, или создаваемый звонком setEntry
с a PrivateKeyEntry
или a SecretKeyEntry
.alias
- псевдоним для keystore записи, которая будет проверенаKeyStoreException
- если keystore не был инициализирован (загруженный).public final boolean isCertificateEntry(String alias) throws KeyStoreException
setCertificateEntry
, или создаваемый звонком setEntry
с a TrustedCertificateEntry
.alias
- псевдоним для keystore записи, которая будет проверенаKeyStoreException
- если keystore не был инициализирован (загруженный).public final String getCertificateAlias(Certificate cert) throws KeyStoreException
Этот метод пытается соответствовать данный сертификат с каждой keystore записью. Если запись, которую рассматривают, создавалась звонком setCertificateEntry
, или создаваемый звонком setEntry
с a TrustedCertificateEntry
, тогда данный сертификат по сравнению с сертификатом той записи.
Если запись, которую рассматривают, создавалась звонком setKeyEntry
, или создаваемый звонком setEntry
с a PrivateKeyEntry
, тогда данный сертификат по сравнению с первым элементом цепочки сертификата той записи.
cert
- сертификат, чтобы соответствовать с.KeyStoreException
- если keystore не был инициализирован (загруженный).public final void store(OutputStream stream, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
stream
- поток вывода, которому пишется этот keystore.password
- пароль, чтобы генерировать keystore проверку целостностиKeyStoreException
- если keystore не был инициализирован (загруженный).IOException
- если была проблема ввода-вывода с даннымиNoSuchAlgorithmException
- если соответствующий алгоритм целостности данных не мог бы быть найденCertificateException
- если какой-либо из сертификатов, включенных в keystore данные, не мог бы быть сохраненpublic final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
.param
- LoadStoreParameter
это определяет, как сохранить keystore, который может быть null
IllegalArgumentException
- если данный LoadStoreParameter
ввод не распознаетсяKeyStoreException
- если keystore не был инициализирован (загруженный)IOException
- если была проблема ввода-вывода с даннымиNoSuchAlgorithmException
- если соответствующий алгоритм целостности данных не мог бы быть найденCertificateException
- если какой-либо из сертификатов, включенных в keystore данные, не мог бы быть сохраненpublic final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
Пароль может быть дан, чтобы разблокировать keystore (например, keystore находится на аппаратном маркерном устройстве), или проверять целостность keystore данных. Если пароль не дается для проверки целостности, то проверка целостности не выполняется.
Чтобы создать пустой keystore, или если keystore не может быть инициализирован от потока, передачи null
как stream
параметр.
Отметьте, что, если этот keystore был уже загружен, он повторно инициализируется и загружается снова из данного входного потока.
stream
- входной поток, из которого keystore загружается, или null
password
- пароль, используемый, чтобы проверить целостность keystore, пароль, используемый, чтобы разблокировать keystore, или null
IOException
- если есть проблема ввода-вывода или формата с keystore данными, если пароль требуется, но не дается, или если данный пароль был неправильным. Если ошибка происходит из-за неправильного пароля, cause
из IOException
должен быть UnrecoverableKeyException
NoSuchAlgorithmException
- если алгоритм, используемый, чтобы проверить целостность keystore, не может быть найденCertificateException
- если какой-либо из сертификатов в keystore не мог бы быть загруженpublic final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
. Отметьте, что, если этот KeyStore был уже загружен, он повторно инициализируется и загружается снова из данного параметра.
param
- LoadStoreParameter
это определяет, как загрузить keystore, который может быть null
IllegalArgumentException
- если данный LoadStoreParameter
ввод не распознаетсяIOException
- если есть проблема ввода-вывода или формата с keystore данными. Если ошибка происходит из-за неправильного ProtectionParameter
(например, неправильный пароль) cause
из IOException
должен быть UnrecoverableKeyException
NoSuchAlgorithmException
- если алгоритм, используемый, чтобы проверить целостность keystore, не может быть найденCertificateException
- если какой-либо из сертификатов в keystore не мог бы быть загруженpublic final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Entry
для указанного псевдонима с указанным параметром защиты.alias
- получите keystore Entry
для этого псевдонимаprotParam
- ProtectionParameter
используемый, чтобы защитить Entry
, который может быть null
Entry
для указанного псевдонима, или null
если нет такой записиNullPointerException
- если alias
null
NoSuchAlgorithmException
- если алгоритм для того, чтобы восстановить запись не может быть найденUnrecoverableEntryException
- если указанное protParam
были недостаточны или недопустимыUnrecoverableKeyException
- если запись является a PrivateKeyEntry
или SecretKeyEntry
и указанное protParam
не содержит информацию, должен был восстановить ключ (например, неправильный пароль)KeyStoreException
- если keystore не был инициализирован (загруженный).setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)
public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Entry
под указанным псевдонимом. Параметр защиты используется, чтобы защитить Entry
. Если запись уже существует для указанного псевдонима, она переопределяется.
alias
- сохраните keystore Entry
под этим псевдонимомentry
- Entry
сохранитьprotParam
- ProtectionParameter
используемый, чтобы защитить Entry
, который может быть null
NullPointerException
- если alias
или entry
null
KeyStoreException
- если keystore не был инициализирован (загруженный), или если эта работа перестала работать по некоторой другой причинеgetEntry(String, KeyStore.ProtectionParameter)
public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
Entry
для указанного alias
экземпляр или подкласс указанного entryClass
.alias
- имя псевдонимаentryClass
- класс записиEntry
для указанного alias
экземпляр или подкласс указанного entryClass
, ложь иначеNullPointerException
- если alias
или entryClass
null
KeyStoreException
- если keystore не был инициализирован (загруженный)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.