Класс 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). CA — это службы, которые создают сертификаты, помещая данные в стандартный формат X.509, а затем подписывая их цифровой подписью. CA выступают в роли доверенных третьих сторон, знакомя друг с другом участников, которые не знают друг друга напрямую. Сертификаты CA подписываются либо самим центром, либо другим CA, например корневым 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, чтобы найти фактическую реализацию, либо создаёт экземпляр реализации по умолчанию.
Свойству cert.provider.x509v1 присваивается реализация X.509 по умолчанию, например:
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Сравнивает этот сертификат с указанным объектом на предмет равенства. |
abstract byte[] |
getEncoded() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Возвращает закодированное представление этого сертификата. |
abstract PublicKey |
getPublicKey() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Возвращает открытый ключ из этого сертификата. |
int |
hashCode() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Возвращает хеш-код этого сертификата, вычисленный по его закодированному представлению. |
abstract String |
toString() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Возвращает строковое представление этого сертификата. |
abstract void |
verify |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Проверяет, подписан ли этот сертификат с использованием закрытого ключа, соответствующего указанному открытому ключу. |
abstract void |
verify |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Проверяет, подписан ли этот сертификат с использованием закрытого ключа, соответствующего указанному открытому ключу. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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 (различающееся имя издателя) из сертификата. Имя издателя указывает сущность, подписавшую (и выдавшую) сертификат. Поле имени издателя содержит различающееся имя X.500 (DN). Определение 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
См. getIssuerDN, где приведены Name и другие соответствующие определения.
- Возвращает:
- объект 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.
java.security.cert.