Класс X509Certificate
- java.lang.Object
-
- javax.security.cert.Certificate
-
- javax.security.cert.X509Certificate
public abstract class X509Certificate extends Certificate
Абстрактный класс для сертификатов X.509 v1. Он предоставляет стандартный способ доступа ко всем атрибутам сертификата X.509 версии 1. Атрибуты, специфичные для X.509 v2 или v3, недоступны через этот интерфейс. Будущие улучшения API обеспечат полный доступ к полным атрибутам X.509 v3.
Основной формат 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(); OR 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.
- Since:
- 1.4
- См. также:
-
Certificate,X509Extension,security properties
Краткое описание конструкторов
| Конструктор и описание |
|---|
X509Certificate() |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
abstract void |
checkValidity() Проверяет, действителен ли сертификат в настоящее время. |
abstract void |
checkValidity(Date date) Проверяет, попадает ли указанная дата в период действия сертификата. |
static X509Certificate |
getInstance(byte[] certData) Создаёт объект X509Certificate и инициализирует его указанным массивом байтов. |
static X509Certificate |
getInstance(InputStream inStream) Создаёт объект X509Certificate и инициализирует его данными, считанными из потока ввода |
abstract Principal |
getIssuerDN() Получает значение |
abstract Date |
getNotAfter() Получает дату |
abstract Date |
getNotBefore() Получает дату |
abstract BigInteger |
getSerialNumber() Получает значение |
abstract String |
getSigAlgName() Получает имя алгоритма подписи для алгоритма подписи сертификата. |
abstract String |
getSigAlgOID() Получает строку OID алгоритма подписи из сертификата. |
abstract byte[] |
getSigAlgParams() Получает параметры алгоритма подписи в формате DER из алгоритма подписи этого сертификата. |
abstract Principal |
getSubjectDN() Получает значение |
abstract int |
getVersion() Получает значение |
Методы, унаследованные от класса javax.security.cert.Certificate
equals, getEncoded, getPublicKey, hashCode, toString, verify, verify Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
X509Certificate
public X509Certificate()
Методы
getInstance
public static final X509Certificate getInstance(InputStream inStream)
throws CertificateException Инициализирует объект 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 Инициализирует объект X509Certificate указанным массивом байтов. Реализация (X509Certificate — абстрактный класс) предоставляется классом, указанным в качестве значения свойства безопасности 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. - См. также:
checkValidity()
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, имя которого является именем субъекта.
- См. также:
getIssuerDN()
getNotBefore
public abstract Date getNotBefore()
Получает дату notBefore из периода действия сертификата. Соответствующие определения ASN.1:
validity Validity
Validity ::= SEQUENCE {
notBefore CertificateValidityDate,
notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime } - Возвращает:
- начальную дату периода действия.
- См. также:
checkValidity()
getNotAfter
public abstract Date getNotAfter()
Получает дату notAfter из периода действия сертификата. См. getNotBefore для соответствующих определений ASN.1.
- Возвращает:
- конечную дату периода действия.
- См. также:
checkValidity()
getSigAlgName
public abstract String getSigAlgName()
Получает имя алгоритма подписи для алгоритма подписи сертификата. Пример: строка "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()
Получает строку OID алгоритма подписи из сертификата. OID представлен набором положительных целых чисел, разделенных точками. Например, строка "1.2.840.10040.4.3" идентифицирует алгоритм подписи SHA-1 с DSA в соответствии с частью I PKIX.
См. getSigAlgName для соответствующих определений ASN.1.
- Возвращает:
- строку OID алгоритма подписи.
getSigAlgParams
public abstract byte[] getSigAlgParams()
Получает DER-кодированные параметры алгоритма подписи из алгоритма подписи этого сертификата. В большинстве случаев параметры алгоритма подписи равны null; параметры обычно предоставляются с открытым ключом сертификата.
См. getSigAlgName для соответствующих определений ASN.1.
- Возвращает:
- DER-кодированные параметры алгоритма подписи или null, если параметры отсутствуют.
© 1993, 2020, 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.