|
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();
try (FileInputStream fis = new FileInputStream("keyStoreName")) {
ks.load(fis, password);
}
Создать пустой 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
try (FileOutputStream fos = new FileOutputStream("newKeyStoreName")) {
ks.store(fos, password);
}
Отметьте, что, хотя тот же самый пароль может использоваться, чтобы загрузить keystore, защитить запись с закрытым ключом, защитить запись секретного ключа, и сохранить keystore (как показывается в примере кода выше), различные пароли или другие параметры защиты могут также использоваться. Каждая реализация платформы Java обязана поддерживать следующий стандарт KeyStore введите:
PrivateKey, SecretKey, Certificate| Модификатор и Тип | Класс и Описание |
|---|---|
static class |
KeyStore. Разработчик
Описание будущим образом инстанцированного объекта KeyStore.
|
static class |
KeyStore. CallbackHandlerProtection
ProtectionParameter, инкапсулирующий CallbackHandler.
|
static class |
KeyStore. DomainLoadStoreParameter
Данные конфигурации, который определяет keystores в keystore домене.
|
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 тип как определено
keystore.type свойство безопасности, или строка "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 для указанного типа.Providerpublic static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
Возвращается новый объект KeyStore инкапсуляция реализации KeyStoreSpi от указанного провайдера. Указанный провайдер должен быть зарегистрирован в списке поставщика систем обеспечения безопасности.
Отметьте, что список зарегистрированных провайдеров может быть получен через Security.getProviders() метод.
type - тип keystore. См. раздел KeyStore в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандарте keystore типы.provider - имя провайдера.KeyStoreException - если реализация KeyStoreSpi для указанного типа не доступна от указанного провайдера.NoSuchProviderException - если указанный провайдер не регистрируется в списке поставщика систем обеспечения безопасности.IllegalArgumentException - если имя провайдера является нулем или пустой.Providerpublic static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
Возвращается новый объект KeyStore инкапсуляция реализации KeyStoreSpi от указанного объекта Провайдера. Отметьте, что указанный объект Провайдера не должен быть зарегистрирован в списке провайдера.
type - тип keystore. См. раздел KeyStore в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандарте keystore типы.provider - провайдер.KeyStoreException - если реализация KeyStoreSpi для указанного типа не доступна от указанного объекта Провайдера.IllegalArgumentException - если указанный провайдер является нулем.Providerpublic static final String getDefaultType()
keystore.type свойство безопасности, или строка "jks" (акроним для "Java keystore"), если никакое такое свойство не существует. Значение по умолчанию keystore тип может использоваться приложениями, которые не хотят использовать трудно кодированный тип keystore, вызывая один из getInstance методы, и хотят обеспечить значение по умолчанию keystore тип в случае, если пользователь не определяет его собственное.
Значение по умолчанию keystore тип может быть изменено, устанавливая значение keystore.type свойство безопасности к требуемому типу keystore.
keystore.type свойство безопасности, или строка "jks", если никакое такое свойство не существует.security propertiespublic 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, который может быть nullIllegalArgumentException - если данный 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 загружается, или nullpassword - пароль, используемый, чтобы проверить целостность keystore, пароль, используемый, чтобы разблокировать keystore, или nullIOException - если есть проблема ввода-вывода или формата с keystore данными, если пароль требуется, но не дается, или если данный пароль был неправильным. Если ошибка происходит из-за неправильного пароля, cause из IOException должен быть UnrecoverableKeyExceptionNoSuchAlgorithmException - если алгоритм, используемый, чтобы проверить целостность keystore, не может быть найденCertificateException - если какой-либо из сертификатов в keystore не мог бы быть загруженpublic final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter. Отметьте, что, если этот KeyStore был уже загружен, он повторно инициализируется и загружается снова из данного параметра.
param - LoadStoreParameter это определяет, как загрузить keystore, который может быть nullIllegalArgumentException - если данный LoadStoreParameter ввод не распознаетсяIOException - если есть проблема ввода-вывода или формата с keystore данными. Если ошибка происходит из-за неправильного ProtectionParameter (например, неправильный пароль) cause из IOException должен быть UnrecoverableKeyExceptionNoSuchAlgorithmException - если алгоритм, используемый, чтобы проверить целостность keystore, не может быть найденCertificateException - если какой-либо из сертификатов в keystore не мог бы быть загруженpublic final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Entry для указанного псевдонима с указанным параметром защиты.alias - получите keystore Entry для этого псевдонимаprotParam - ProtectionParameter используемый, чтобы защитить Entry, который может быть nullEntry для указанного псевдонима, или null если нет такой записиNullPointerException - если alias nullNoSuchAlgorithmException - если алгоритм для того, чтобы восстановить запись не может быть найден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, который может быть nullNullPointerException - если alias или entry nullKeyStoreException - если keystore не был инициализирован (загруженный), или если эта работа перестала работать по некоторой другой причинеgetEntry(String, KeyStore.ProtectionParameter)public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
Entry для указанного alias экземпляр или подкласс указанного entryClass.alias - имя псевдонимаentryClass - запись classEntry для указанного alias экземпляр или подкласс указанного entryClass, ложь иначеNullPointerException - если alias или entryClass nullKeyStoreException - если keystore не был инициализирован (загруженный)
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92