Класс X509Certificate
@Deprecated(since="9", forRemoval=true) public abstract class X509Certificate extends Certificate
Базовый формат 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
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
X509Certificate() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
checkValidity() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Проверяет, действителен ли сертификат в данный момент. |
abstract void |
checkValidity |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Проверяет, входит ли указанная дата в период действия сертификата. |
static final X509Certificate |
getInstance |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Создаёт объект X509Certificate и инициализирует его указанным байтовым массивом. |
static final X509Certificate |
getInstance |
Устарело, будет удалено: этот элемент 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
Подробное описание конструкторов
X509Certificate
public X509Certificate()
Подробное описание методов
getInstance
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
inStream. Реализация (X509Certificate — абстрактный класс) предоставляется классом, указанным в качестве значения свойства безопасности cert.provider.x509v1. Примечание. Во входном потоке ожидается только один сертификат в кодировке DER. Кроме того, все подклассы X509Certificate должны предоставлять конструктор следующего вида:
public <subClass>(InputStream inStream) ...
- Параметры:
-
inStream— входной поток с данными, которые необходимо считать для инициализации сертификата. - Возвращает:
- объект X509Certificate, инициализированный данными из входного потока.
- Исключения:
-
CertificateException— если произошла ошибка инициализации класса или разбора сертификата.
getInstance
public static final X509Certificate getInstance(byte[] certData) throws CertificateException
cert.provider.x509v1. Примечание. Все подклассы X509Certificate должны предоставлять конструктор следующего вида:
public <subClass>(InputStream inStream) ...
- Параметры:
-
certData— байтовый массив, содержащий сертификат в кодировке DER. - Возвращает:
- объект X509Certificate, инициализированный данными из
certData. - Исключения:
-
CertificateException— если произошла ошибка инициализации класса или разбора сертификата.
checkValidity
public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
Период действия состоит из двух значений даты и времени: начальной и конечной дат (и времени), в которые сертификат действителен. Он определяется в 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
- Параметры:
-
date— дата, относительно которой проверяется действительность сертификата. - Исключения:
-
CertificateExpiredException— если срок действия сертификата истёк относительно предоставленного значенияdate. -
CertificateNotYetValidException— если срок действия сертификата ещё не наступил относительно предоставленного значенияdate. - См. также:
getVersion
public abstract int getVersion()
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()
serialNumber из сертификата. Серийный номер — это целое число, присваиваемое центром сертификации каждому сертификату. Для каждого сертификата, выданного данным CA, оно должно быть уникальным (то есть имя издателя и серийный номер идентифицируют уникальный сертификат). Определение ASN.1 для этого значения: serialNumber CertificateSerialNumber CertificateSerialNumber ::= INTEGER
- Возвращает:
- серийный номер.
getIssuerDN
public abstract Principal getIssuerDN()
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()
subject (различительное имя субъекта) из сертификата. Определение ASN.1 для этого поля: subject Name
Определения Name и другие относящиеся к ним определения см. в разделе getIssuerDN.
- Возвращает:
- объект Principal, имя которого является именем субъекта.
- См. также:
getNotBefore
public abstract Date getNotBefore()
notBefore из периода действия сертификата. Соответствующие определения ASN.1:
validity Validity
Validity ::= SEQUENCE {
notBefore CertificateValidityDate,
notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
- Возвращает:
- дату начала периода действия.
- См. также:
getNotAfter
public abstract Date getNotAfter()
notAfter из периода действия сертификата. Соответствующие определения ASN.1 см. в разделе getNotBefore.- Возвращает:
- дату окончания периода действия.
- См. также:
getSigAlgName
public abstract String getSigAlgName()
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()
Соответствующие определения ASN.1 см. в разделе getSigAlgName.
- Возвращает:
- строку OID алгоритма подписи.
getSigAlgParams
public abstract byte[] getSigAlgParams()
Соответствующие определения ASN.1 см. в разделе getSigAlgName.
- Возвращает:
- параметры алгоритма подписи в кодировке DER или null, если параметры отсутствуют.
© 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
java.security.cert.