Spec-Zone.ru › OpenJDK 25

Класс X509Certificate

java.lang.Object
javax.security.cert.Certificate
javax.security.cert.X509Certificate
@Deprecated(since="9", forRemoval=true) public abstract class X509Certificate extends Certificate
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Вместо этого используйте классы из java.security.cert.
Абстрактный класс для сертификатов X.509 версии 1. Он предоставляет стандартный способ доступа ко всем атрибутам сертификата X.509 версии 1. Атрибуты, специфичные для X.509 версий 2 и 3, недоступны через этот интерфейс. В будущих версиях API будет обеспечен полный доступ ко всем атрибутам X.509 версии 3.

Базовый формат X.509 был определён ISO/IEC и ANSI X9 и описывается ниже на языке ASN.1:

Certificate  ::=  SEQUENCE  {
    tbsCertificate       TBSCertificate,
    signatureAlgorithm   AlgorithmIdentifier,
    signature            BIT STRING  }

Эти сертификаты широко используются для аутентификации и других функций в системах интернет-безопасности. К распространённым приложениям относятся Privacy Enhanced Mail (PEM), Transport Layer Security (SSL), подписание кода для распространения доверенного программного обеспечения и Secure Electronic Transactions (SET).

Управление этими сертификатами осуществляют центры сертификации (CA), которые гарантируют их подлинность. Центры сертификации создают сертификаты, помещая данные в стандартный формат X.509, а затем подписывая эти данные цифровой подписью. Центры сертификации выступают доверенными третьими сторонами, обеспечивая знакомство субъектов, которые не имеют прямых сведений друг о друге. Сертификаты центров сертификации подписываются либо ими самими, либо другим центром сертификации, например корневым CA.

Определение ASN.1 для tbsCertificate:

TBSCertificate  ::=  SEQUENCE  {
    version         [0]  EXPLICIT Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    signature            AlgorithmIdentifier,
    issuer               Name,
    validity             Validity,
    subject              Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    }

Ниже приведён пример кода для создания экземпляра сертификата X.509:

InputStream inStream = new FileInputStream("fileName-of-cert");
X509Certificate cert = X509Certificate.getInstance(inStream);
inStream.close();
ИЛИ
byte[] certData = <certificate read from a file, say>
X509Certificate cert = X509Certificate.getInstance(certData);

В обоих случаях код, создающий экземпляр сертификата X.509, обращается к значению свойства безопасности cert.provider.x509v1, чтобы определить фактическую реализацию, или создаёт экземпляр реализации по умолчанию.

Для X.509 свойству cert.provider.x509v1 присваивается реализация по умолчанию, например:

cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl

Чтобы создать экземпляр другой реализации, необходимо изменить значение свойства cert.provider.x509v1. Если это свойство безопасности не задано, будет использоваться реализация по умолчанию. В настоящее время, из-за возможных ограничений безопасности на доступ к свойствам Security, это значение считывается и кэшируется при инициализации класса; если свойство Security недоступно, используется реализация по умолчанию.

Примечание. Классы пакета javax.security.cert существуют для совместимости с более ранними версиями Java Secure Sockets Extension (JSSE). В новых приложениях следует использовать стандартные классы сертификатов Java SE, расположенные в java.security.cert.

С версии:
1.4
См. также:
  • Certificate
  • X509Extension
  • свойства безопасности

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

Конструктор Описание
X509Certificate()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Конструктор для вызова подклассами.

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

Модификатор и тип Метод Описание
abstract void checkValidity()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Проверяет, действителен ли сертификат в данный момент.
abstract void checkValidity(Date date)
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Проверяет, входит ли указанная дата в период действия сертификата.
static final X509Certificate getInstance(byte[] certData)
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Создаёт объект X509Certificate и инициализирует его указанным байтовым массивом.
static final X509Certificate getInstance(InputStream inStream)
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Создаёт объект X509Certificate и инициализирует его данными, считанными из входного потока inStream.
abstract Principal getIssuerDN()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение issuer (различительное имя издателя) из сертификата.
abstract Date getNotAfter()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает дату notAfter из периода действия сертификата.
abstract Date getNotBefore()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает дату notBefore из периода действия сертификата.
abstract BigInteger getSerialNumber()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение serialNumber из сертификата.
abstract String getSigAlgName()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает название алгоритма подписи, использованного для подписи сертификата.
abstract String getSigAlgOID()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает строку OID алгоритма подписи из сертификата.
abstract byte[] getSigAlgParams()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает параметры алгоритма подписи в кодировке DER из алгоритма подписи этого сертификата.
abstract Principal getSubjectDN()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение subject (различительное имя субъекта) из сертификата.
abstract int getVersion()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение version (номер версии) из сертификата.

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

equals, getEncoded, getPublicKey, hashCode, toString, verify, verify

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

X509Certificate

public X509Certificate()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Конструктор для вызова подклассами.

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

getInstance

public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Создаёт объект X509Certificate и инициализирует его данными, считанными из входного потока inStream. Реализация (X509Certificate — абстрактный класс) предоставляется классом, указанным в качестве значения свойства безопасности cert.provider.x509v1.

Примечание. Во входном потоке ожидается только один сертификат в кодировке DER. Кроме того, все подклассы X509Certificate должны предоставлять конструктор следующего вида:

public <subClass>(InputStream inStream) ...
Параметры:
inStream — входной поток с данными, которые необходимо считать для инициализации сертификата.
Возвращает:
объект X509Certificate, инициализированный данными из входного потока.
Исключения:
CertificateException — если произошла ошибка инициализации класса или разбора сертификата.

getInstance

public static final X509Certificate getInstance(byte[] certData) throws CertificateException
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Создаёт объект X509Certificate и инициализирует его указанным байтовым массивом. Реализация (X509Certificate — абстрактный класс) предоставляется классом, указанным в качестве значения свойства безопасности cert.provider.x509v1.

Примечание. Все подклассы X509Certificate должны предоставлять конструктор следующего вида:

public <subClass>(InputStream inStream) ...
Параметры:
certData — байтовый массив, содержащий сертификат в кодировке DER.
Возвращает:
объект X509Certificate, инициализированный данными из certData.
Исключения:
CertificateException — если произошла ошибка инициализации класса или разбора сертификата.

checkValidity

public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Проверяет, действителен ли сертификат в данный момент. Сертификат действителен, если текущие дата и время входят в указанный в сертификате период действия.

Период действия состоит из двух значений даты и времени: начальной и конечной дат (и времени), в которые сертификат действителен. Он определяется в ASN.1 следующим образом:

validity             Validity

Validity ::= SEQUENCE {
    notBefore      CertificateValidityDate,
    notAfter       CertificateValidityDate }

CertificateValidityDate ::= CHOICE {
    utcTime        UTCTime,
    generalTime    GeneralizedTime }
Исключения:
CertificateExpiredException — если срок действия сертификата истёк.
CertificateNotYetValidException — если срок действия сертификата ещё не наступил.

checkValidity

public abstract void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Проверяет, входит ли указанная дата в период действия сертификата. Иными словами, определяет, был бы сертификат действителен в указанную дату и время.
Параметры:
date — дата, относительно которой проверяется действительность сертификата.
Исключения:
CertificateExpiredException — если срок действия сертификата истёк относительно предоставленного значения date.
CertificateNotYetValidException — если срок действия сертификата ещё не наступил относительно предоставленного значения date.
См. также:
  • checkValidity()

getVersion

public abstract int getVersion()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение version (номер версии) из сертификата. Определение ASN.1 для этого значения:
version         [0]  EXPLICIT Version DEFAULT v1

Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
Возвращает:
номер версии из кодировки ASN.1, то есть 0, 1 или 2.

getSerialNumber

public abstract BigInteger getSerialNumber()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение serialNumber из сертификата. Серийный номер — это целое число, присваиваемое центром сертификации каждому сертификату. Для каждого сертификата, выданного данным CA, оно должно быть уникальным (то есть имя издателя и серийный номер идентифицируют уникальный сертификат). Определение ASN.1 для этого значения:
serialNumber     CertificateSerialNumber

CertificateSerialNumber  ::=  INTEGER
Возвращает:
серийный номер.

getIssuerDN

public abstract Principal getIssuerDN()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение issuer (различительное имя издателя) из сертификата. Имя издателя идентифицирует объект, который подписал (и выдал) сертификат.

Поле имени издателя содержит различительное имя (DN) X.500. Определение ASN.1 для этого поля:

issuer    Name

Name ::= CHOICE { RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
    SET OF AttributeValueAssertion

AttributeValueAssertion ::= SEQUENCE {
                              AttributeType,
                              AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY
Name описывает иерархическое имя, состоящее из атрибутов, например названия страны, и соответствующих значений, например US. Тип компонента AttributeValue определяется параметром AttributeType; обычно это будет directoryString. directoryString обычно является одним из следующих типов: PrintableString, TeletexString или UniversalString.
Возвращает:
объект Principal, имя которого является различительным именем издателя.

getSubjectDN

public abstract Principal getSubjectDN()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает значение subject (различительное имя субъекта) из сертификата. Определение ASN.1 для этого поля:
subject    Name

Определения Name и другие относящиеся к ним определения см. в разделе getIssuerDN.

Возвращает:
объект Principal, имя которого является именем субъекта.
См. также:
  • getIssuerDN()

getNotBefore

public abstract Date getNotBefore()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает дату notBefore из периода действия сертификата. Соответствующие определения ASN.1:
validity             Validity

Validity ::= SEQUENCE {
    notBefore      CertificateValidityDate,
    notAfter       CertificateValidityDate }

CertificateValidityDate ::= CHOICE {
    utcTime        UTCTime,
    generalTime    GeneralizedTime }
Возвращает:
дату начала периода действия.
См. также:
  • checkValidity()

getNotAfter

public abstract Date getNotAfter()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает дату notAfter из периода действия сертификата. Соответствующие определения ASN.1 см. в разделе getNotBefore.
Возвращает:
дату окончания периода действия.
См. также:
  • checkValidity()

getSigAlgName

public abstract String getSigAlgName()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает название алгоритма подписи, использованного для подписи сертификата. Например, это может быть строка "SHA-1/DSA". Определение ASN.1 для этого значения:
signatureAlgorithm   AlgorithmIdentifier

AlgorithmIdentifier  ::=  SEQUENCE  {
    algorithm               OBJECT IDENTIFIER,
    parameters              ANY DEFINED BY algorithm OPTIONAL  }
                            -- contains a value of the type
                            -- registered for use with the
                            -- algorithm object identifier value

Название алгоритма определяется по строке OID algorithm.

Возвращает:
название алгоритма подписи.

getSigAlgOID

public abstract String getSigAlgOID()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает строку OID алгоритма подписи из сертификата. OID представляется набором положительных целых чисел, разделённых точками. Например, строка "1.2.840.10040.4.3" обозначает алгоритм подписи SHA-1 с DSA согласно части I PKIX.

Соответствующие определения ASN.1 см. в разделе getSigAlgName.

Возвращает:
строку OID алгоритма подписи.

getSigAlgParams

public abstract byte[] getSigAlgParams()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Возвращает параметры алгоритма подписи в кодировке DER из алгоритма подписи этого сертификата. В большинстве случаев параметры алгоритма подписи равны null; обычно они указываются вместе с открытым ключом сертификата.

Соответствующие определения ASN.1 см. в разделе getSigAlgName.

Возвращает:
параметры алгоритма подписи в кодировке DER или null, если параметры отсутствуют.

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

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/security/cert/X509Certificate.html

Spec-Zone.ru

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