Класс CertificateFactory
public class CertificateFactory extends Object
CertPath) и списков отзыва сертификатов (CRL) на основе их кодировок. Для кодировок, содержащих несколько сертификатов, используйте generateCertificates, если требуется разобрать набор, возможно, не связанных между собой сертификатов. В противном случае используйте generateCertPath, если требуется создать CertPath (цепочку сертификатов), а затем проверить её с помощью CertPathValidator.
Фабрика сертификатов для X.509 должна возвращать сертификаты, являющиеся экземплярами java.security.cert.X509Certificate, и списки отзыва сертификатов, являющиеся экземплярами java.security.cert.X509CRL.
В следующем примере файл считывается с сертификатами в кодировке Base64, каждый из которых ограничен в начале строкой -----BEGIN CERTIFICATE-----, а в конце — строкой -----END CERTIFICATE-----. Мы преобразуем FileInputStream (который не поддерживает mark и reset) в BufferedInputStream (который поддерживает эти методы), чтобы каждый вызов generateCertificate считывал только один сертификат, а позиция чтения входного потока указывала на следующий сертификат в файле:
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
Certificate cert = cf.generateCertificate(bis);
System.out.println(cert.toString());
}
В следующем примере разбирается ответ с сертификатами в формате PKCS#7, сохранённый в файле, и из него извлекаются все сертификаты:
FileInputStream fis = new FileInputStream(filename);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Collection c = cf.generateCertificates(fis);
Iterator i = c.iterator();
while (i.hasNext()) {
Certificate cert = (Certificate)i.next();
System.out.println(cert);
}
Каждая реализация платформы Java должна поддерживать следующий стандартный тип CertificateFactory:
X.509
CertPath: PKCS7PkiPath
- С версии:
- 1.2
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект CertificateFactory указанного типа и инкапсулирует в нём указанную реализацию поставщика (объект SPI). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final Certificate |
generateCertificate |
Создаёт объект сертификата и инициализирует его данными, считанными из входного потока inStream. |
final Collection |
generateCertificates |
Возвращает представление набора (возможно, пустого) сертификатов, считанных из указанного входного потока inStream. |
final CertPath |
generateCertPath |
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream. |
final CertPath |
generateCertPath |
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream. |
final CertPath |
generateCertPath |
Создаёт объект CertPath и инициализирует его List из Certificateов. |
final CRL |
generateCRL |
Создаёт объект списка отзыва сертификатов (CRL) и инициализирует его данными, считанными из входного потока inStream. |
final Collection |
generateCRLs |
Возвращает представление набора (возможно, пустого) списков отзыва сертификатов, считанных из указанного входного потока inStream. |
final Iterator |
getCertPathEncodings() |
Возвращает итерацию кодировок CertPath, поддерживаемых этой фабрикой сертификатов; кодировка по умолчанию указана первой. |
static final CertificateFactory |
getInstance |
Возвращает объект фабрики сертификатов, реализующий указанный тип сертификата. |
static final CertificateFactory |
getInstance |
Возвращает объект фабрики сертификатов для указанного типа сертификата. |
static final CertificateFactory |
getInstance |
Возвращает объект фабрики сертификатов для указанного типа сертификата. |
final Provider |
getProvider() |
Возвращает поставщика этой фабрики сертификатов. |
final String |
getType() |
Возвращает имя типа сертификата, связанного с этой фабрикой сертификатов. |
Подробное описание конструкторов
CertificateFactory
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
- Параметры:
-
certFacSpi— реализация поставщика. -
provider— поставщик. -
type— тип сертификата.
Подробное описание методов
getInstance
public static final CertificateFactory getInstance(String type) throws CertificateException
Этот метод просматривает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi первого поставщика, поддерживающего указанный тип.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание по реализации:
- Эталонная реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
type— имя запрошенного типа сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java. - Возвращает:
- объект фабрики сертификатов для указанного типа
- Исключения:
-
CertificateException— если ни одинProviderне поддерживает реализациюCertificateFactorySpiдля указанного типа -
NullPointerException— еслиtypeимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
type— тип сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java. -
provider— имя поставщика. - Возвращает:
- объект фабрики сертификатов для указанного типа
- Исключения:
-
CertificateException— если у указанного поставщика отсутствует реализацияCertificateFactorySpiдля указанного алгоритма -
IllegalArgumentException— если имя поставщика равноnullили пусто -
NoSuchProviderException— если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException— еслиtypeимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
type— тип сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java. -
provider— поставщик. - Возвращает:
- объект фабрики сертификатов для указанного типа
- Исключения:
-
CertificateException— если указанный объектProviderне предоставляет реализациюCertificateFactorySpiдля указанного алгоритма -
IllegalArgumentException— еслиproviderимеет значениеnull -
NullPointerException— еслиtypeимеет значениеnull - С версии:
- 1.4
- Внешние спецификации
- См. также:
getProvider
public final Provider getProvider()
- Возвращает:
- поставщика этой фабрики сертификатов.
getType
public final String getType()
- Возвращает:
- имя типа сертификата, связанного с этой фабрикой сертификатов.
generateCertificate
public final Certificate generateCertificate(InputStream inStream) throws CertificateException
inStream. Чтобы воспользоваться специальным форматом сертификатов, поддерживаемым этой фабрикой сертификатов, возвращённый объект сертификата можно привести к соответствующему классу сертификата. Например, если эта фабрика сертификатов реализует сертификаты X.509, возвращённый объект сертификата можно привести к классу X509Certificate.
В случае фабрики сертификатов для сертификатов X.509 сертификат, переданный в inStream, должен быть закодирован в DER и может быть представлен в двоичном формате или в печатном формате (Base64). Если сертификат представлен в кодировке Base64, в начале он должен быть ограничен строкой -----BEGIN CERTIFICATE-----, а в конце — строкой -----END CERTIFICATE-----.
Обратите внимание, что если указанный входной поток не поддерживает mark и reset, этот метод использует весь входной поток. В противном случае каждый вызов этого метода считывает один сертификат, а позиция чтения входного потока указывает на следующий доступный байт после встроенного маркера конца сертификата. Если данные во входном потоке не содержат встроенного маркера конца сертификата (кроме EOF), а после разбора сертификата остаются дополнительные данные, генерируется исключение CertificateException.
- Параметры:
-
inStream— входной поток с данными сертификата. - Возвращает:
- объект сертификата, инициализированный данными из входного потока.
- Исключения:
-
CertificateException— при ошибках разбора.
getCertPathEncodings
public final Iterator<String> getCertPathEncodings()
CertPath, поддерживаемых этой фабрикой сертификатов; кодировка по умолчанию указана первой. Сведения о стандартных именах кодировок и их форматах см. в разделе «Кодировки CertPath» спецификации стандартных имён алгоритмов безопасности Java. Попытки изменить возвращённый Iterator с помощью его метода remove приводят к исключению UnsupportedOperationException.
- Возвращает:
Iteratorпо именам поддерживаемых кодировокCertPath(в видеStringов)- С версии:
- 1.4
- Внешние спецификации
generateCertPath
public final CertPath generateCertPath(InputStream inStream) throws CertificateException
CertPath и инициализирует его данными, считанными из InputStream inStream. Предполагается, что данные имеют кодировку по умолчанию. Имя кодировки по умолчанию — первый элемент Iterator, возвращённого методом getCertPathEncodings.- Параметры:
-
inStream—InputStream, содержащий данные - Возвращает:
CertPath, инициализированный данными изInputStream- Исключения:
-
CertificateException— если при декодировании возникает исключение - С версии:
- 1.4
generateCertPath
public final CertPath generateCertPath(InputStream inStream, String encoding) throws CertificateException
CertPath и инициализирует его данными, считанными из InputStream inStream. Предполагается, что данные имеют указанную кодировку. Сведения о стандартных именах кодировок и их форматах см. в разделе «Кодировки CertPath» спецификации стандартных имён алгоритмов безопасности Java.- Параметры:
-
inStream—InputStream, содержащий данные -
encoding— кодировка данных - Возвращает:
CertPath, инициализированный данными изInputStream- Исключения:
-
CertificateException— если при декодировании возникает исключение или запрошенная кодировка не поддерживается - С версии:
- 1.4
- Внешние спецификации
generateCertPath
public final CertPath generateCertPath(List<? extends Certificate> certificates) throws CertificateException
CertPath и инициализирует его List из Certificateов. Передаваемые сертификаты должны иметь тип, поддерживаемый CertificateFactory. Они будут скопированы из переданного объекта List.
- Параметры:
-
certificates—ListизCertificateов - Возвращает:
CertPath, инициализированный переданным списком сертификатов- Исключения:
-
CertificateException— если возникает исключение - С версии:
- 1.4
generateCertificates
public final Collection<? extends Certificate> generateCertificates(InputStream inStream) throws CertificateException
inStream. Чтобы воспользоваться специальным форматом сертификатов, поддерживаемым этой фабрикой сертификатов, каждый элемент возвращённого представления набора можно привести к соответствующему классу сертификата. Например, если эта фабрика сертификатов реализует сертификаты X.509, элементы возвращённого набора можно привести к классу X509Certificate.
В случае фабрики сертификатов для сертификатов X.509 inStream может содержать последовательность сертификатов в кодировке DER в форматах, описанных для метода generateCertificate. Кроме того, inStream может содержать цепочку сертификатов PKCS#7. Это объект PKCS#7 SignedData, единственным значимым полем которого является certificates. В частности, подпись и содержимое игнорируются. Этот формат позволяет загружать несколько сертификатов одновременно. Если сертификаты отсутствуют, возвращается пустой набор.
Обратите внимание, что если указанный входной поток не поддерживает mark и reset, этот метод использует весь входной поток.
- Параметры:
-
inStream— входной поток с сертификатами. - Возвращает:
- представление набора (возможно, пустого) объектов java.security.cert.Certificate, инициализированных данными из входного потока.
- Исключения:
-
CertificateException— при ошибках разбора.
generateCRL
public final CRL generateCRL(InputStream inStream) throws CRLException
inStream. Чтобы воспользоваться специальным форматом CRL, поддерживаемым этой фабрикой сертификатов, возвращённый объект CRL можно привести к соответствующему классу CRL. Например, если эта фабрика сертификатов реализует CRL X.509, возвращённый объект CRL можно привести к классу X509CRL.
Обратите внимание, что если указанный входной поток не поддерживает mark и reset, этот метод использует весь входной поток. В противном случае каждый вызов этого метода считывает один CRL, а позиция чтения входного потока указывает на следующий доступный байт после встроенного маркера конца CRL. Если данные во входном потоке не содержат встроенного маркера конца CRL (кроме EOF), а после разбора CRL остаются дополнительные данные, генерируется исключение CRLException.
- Параметры:
-
inStream— входной поток с данными CRL. - Возвращает:
- объект CRL, инициализированный данными из входного потока.
- Исключения:
-
CRLException— при ошибках разбора.
generateCRLs
public final Collection<? extends CRL> generateCRLs(InputStream inStream) throws CRLException
inStream. Чтобы воспользоваться специальным форматом CRL, поддерживаемым этой фабрикой сертификатов, каждый элемент возвращённого представления набора можно привести к соответствующему классу CRL. Например, если эта фабрика сертификатов реализует CRL X.509, элементы возвращённого набора можно привести к классу X509CRL.
В случае фабрики сертификатов для CRL X.509 inStream может содержать последовательность CRL в кодировке DER. Кроме того, inStream может содержать набор CRL PKCS#7. Это объект PKCS#7 SignedData, единственным значимым полем которого является crls. В частности, подпись и содержимое игнорируются. Этот формат позволяет загружать несколько CRL одновременно. Если CRL отсутствуют, возвращается пустой набор.
Обратите внимание, что если указанный входной поток не поддерживает mark и reset, этот метод использует весь входной поток.
- Параметры:
-
inStream— входной поток со списками CRL. - Возвращает:
- представление набора (возможно, пустого) объектов java.security.cert.CRL, инициализированных данными из входного потока.
- Исключения:
-
CRLException— при ошибках разбора.
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/cert/CertificateFactory.html