Класс 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).
Эти сертификаты управляются и гарантируются уполномоченными центрами сертификации (УЦС). УЦС — это сервисы, которые создают сертификаты, помещая данные в стандартный формат X.509, а затем цифрово подписывают эти данные. УЦС действуют как доверенные третьи стороны, устанавливающие связи между участниками, которые не имеют прямого знания друг о друге. Сертификаты УЦС либо подписаны самим УЦС, либо другим УЦС, например, «корневым» УЦС.
Определение 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 должно быть изменено для создания другой реализации. Если это свойство безопасности не задано, будет использована реализация по умолчанию. В настоящее время, из-за возможных ограничений безопасности доступа к свойствам безопасности, это значение просматривается и кешируется во время инициализации класса и переключается на реализацию по умолчанию, если свойство безопасности недоступно.
Примечание: Классы в пакете 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 (номер версии) из сертификата. |
Методы, объявленные в классе javax.security.cert.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 из сертификата. Номер серии — целое число, присвоенное центром сертификации каждому сертификату. Он должен быть уникальным для каждого сертификата, выпущенного данным ЦС (т.е. имя издателя и номер серии идентифицируют уникальный сертификат). Определение 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 описывает иерархическое имя, состоящее из атрибутов, таких как название страны, и соответствующих значений, таких как США. Тип компонента 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 из периода действия сертификата. См. getNotBefore для соответствующих определений ASN.1.- Возвращает:
- конечная дата периода действия.
- См. также:
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()
См. getSigAlgName для соответствующих определений ASN.1.
- Возвращает:
- строку OID алгоритма подписи.
getSigAlgParams
public abstract byte[] getSigAlgParams()
См. getSigAlgName для соответствующих определений ASN.1.
- Возвращает:
- DER-закодированные параметры алгоритма подписи или null, если параметры отсутствуют.
© 1993, 2023, 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/21/docs/api/java.base/javax/security/cert/X509Certificate.html
java.security.certвместо этого.