Класс X509CertSelector
- Все реализуемые интерфейсы:
Cloneable, CertSelector
public class X509CertSelector extends Object implements CertSelector
CertSelector, который выбирает X509Certificates, соответствующие всем указанным критериям. Этот класс особенно полезен при выборе сертификатов из CertStore для построения пути сертификации, соответствующего PKIX. При первоначальном создании у X509CertSelector критерии не включены, и каждый из методов get возвращает значение по умолчанию (null или -1 для метода getBasicConstraints). Поэтому метод match возвращает true для любого X509Certificate. Обычно включают несколько критериев (например, вызывая setIssuer(X500Principal) или setKeyUsage), а затем передают X509CertSelector методу CertStore.getCertificates или аналогичному методу.
Можно включить несколько критериев (например, вызвав setIssuer(X500Principal) и setSerialNumber), чтобы метод match обычно однозначно соответствовал одному X509Certificate. Мы говорим «обычно», поскольку два удостоверяющих центра могут иметь одинаковое различительное имя и каждый выдать сертификат с одинаковым серийным номером. Другие уникальные сочетания включают критерии issuer, subject, subjectKeyIdentifier и/или subjectPublicKey.
Определения упомянутых ниже расширений сертификатов X.509 приведены в RFC 5280: профиль инфраструктуры открытых ключей Internet X.509 для сертификатов и списков отзыва сертификатов (CRL).
Параллельный доступ
Если не указано иное, методы, определённые в этом классе, не являются потокобезопасными. Потоки, которым необходимо одновременно обращаться к одному объекту, должны синхронизироваться между собой и обеспечивать необходимую блокировку. Потокам, работающим с отдельными объектами, синхронизация не требуется.
- Начиная с:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
X509CertSelector() |
Создаёт X509CertSelector. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addPathToName |
Добавляет имя в критерий pathToNames. |
void |
addPathToName |
Добавляет имя в критерий pathToNames. |
void |
addSubjectAlternativeName |
Добавляет имя в критерий subjectAlternativeNames. |
void |
addSubjectAlternativeName |
Добавляет имя в критерий subjectAlternativeNames. |
Object |
clone() |
Возвращает копию этого объекта. |
byte[] |
getAuthorityKeyIdentifier() |
Возвращает критерий authorityKeyIdentifier. |
int |
getBasicConstraints() |
Возвращает ограничение basic constraints. |
X509Certificate |
getCertificate() |
Возвращает критерий certificateEquals. |
Date |
getCertificateValid() |
Возвращает критерий certificateValid. |
Set |
getExtendedKeyUsage() |
Возвращает критерий extendedKeyUsage. |
X500Principal |
getIssuer() |
Возвращает критерий issuer в виде X500Principal. |
byte[] |
getIssuerAsBytes() |
Возвращает критерий issuer в виде массива байтов. |
String |
getIssuerAsString() |
Устарел. |
boolean[] |
getKeyUsage() |
Возвращает критерий keyUsage. |
boolean |
getMatchAllSubjectAltNames() |
Указывает, должен ли X509Certificate содержать все или хотя бы одно из имён subjectAlternativeNames, заданных методами setSubjectAlternativeNames или addSubjectAlternativeName. |
byte[] |
getNameConstraints() |
Возвращает критерий ограничений имён. |
Collection |
getPathToNames() |
Возвращает копию критерия pathToNames. |
Set |
getPolicy() |
Возвращает критерий policy. |
Date |
getPrivateKeyValid() |
Возвращает критерий privateKeyValid. |
BigInteger |
getSerialNumber() |
Возвращает критерий serialNumber. |
X500Principal |
getSubject() |
Возвращает критерий subject в виде X500Principal. |
Collection |
getSubjectAlternativeNames() |
Возвращает копию критерия subjectAlternativeNames. |
byte[] |
getSubjectAsBytes() |
Возвращает критерий subject в виде массива байтов. |
String |
getSubjectAsString() |
Устарел. Вместо него используйте getSubject() или getSubjectAsBytes(). |
byte[] |
getSubjectKeyIdentifier() |
Возвращает критерий subjectKeyIdentifier. |
PublicKey |
getSubjectPublicKey() |
Возвращает критерий subjectPublicKey. |
String |
getSubjectPublicKeyAlgID() |
Возвращает критерий subjectPublicKeyAlgID. |
boolean |
match |
Определяет, следует ли выбирать Certificate. |
void |
setAuthorityKeyIdentifier |
Задаёт критерий authorityKeyIdentifier. |
void |
setBasicConstraints |
Задаёт ограничение basic constraints. |
void |
setCertificate |
Задаёт критерий certificateEquals. |
void |
setCertificateValid |
Задаёт критерий certificateValid. |
void |
setExtendedKeyUsage |
Задаёт критерий extendedKeyUsage. |
void |
setIssuer |
Задаёт критерий issuer. |
void |
setIssuer |
Устарел. Вместо него используйте setIssuer(X500Principal) или setIssuer(byte[]). |
void |
setIssuer |
Задаёт критерий issuer. |
void |
setKeyUsage |
Задаёт критерий keyUsage. |
void |
setMatchAllSubjectAltNames |
Включает или отключает сопоставление всех имён subjectAlternativeNames, заданных методами setSubjectAlternativeNames или addSubjectAlternativeName. |
void |
setNameConstraints |
Задаёт критерий ограничений имён. |
void |
setPathToNames |
Задаёт критерий pathToNames. |
void |
setPolicy |
Задаёт ограничение policy. |
void |
setPrivateKeyValid |
Задаёт критерий privateKeyValid. |
void |
setSerialNumber |
Задаёт критерий serialNumber. |
void |
setSubject |
Задаёт критерий subject. |
void |
setSubject |
Устарел. Вместо него используйте setSubject(X500Principal) или setSubject(byte[]). |
void |
setSubject |
Задаёт критерий subject. |
void |
setSubjectAlternativeNames |
Задаёт критерий subjectAlternativeNames. |
void |
setSubjectKeyIdentifier |
Задаёт критерий subjectKeyIdentifier. |
void |
setSubjectPublicKey |
Задаёт критерий subjectPublicKey. |
void |
setSubjectPublicKey |
Задаёт критерий subjectPublicKey. |
void |
setSubjectPublicKeyAlgID |
Задаёт критерий subjectPublicKeyAlgID. |
String |
toString() |
Возвращает текстовое представление CertSelector. |
Подробное описание конструкторов
X509CertSelector
public X509CertSelector()
X509CertSelector. Изначально критерии не заданы, поэтому будет соответствовать любой X509Certificate.Подробное описание методов
setCertificate
public void setCertificate(X509Certificate cert)
X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не выполняется. Этот метод особенно полезен, когда необходимо сопоставить один сертификат. Хотя вместе с критерием certificateEquals можно указать другие критерии, обычно это нецелесообразно и не требуется.
- Параметры:
-
cert—X509Certificateдля сопоставления (илиnull) - См. также:
setSerialNumber
public void setSerialNumber(BigInteger serial)
X509Certificate. Если null, подойдет любой серийный номер сертификата.- Параметры:
-
serial— серийный номер сертификата для сопоставления (илиnull) - См. также:
setIssuer
public void setIssuer(X500Principal issuer)
X509Certificate. Если null, подойдет любое различительное имя издателя.- Параметры:
-
issuer— различительное имя в виде X500Principal (илиnull) - Начиная с версии:
- 1.5
setIssuer
@Deprecated(since="16") public void setIssuer(String issuerDN) throws IOException
setIssuer(X500Principal) или setIssuer(byte[]). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке в строковом представлении RFC 2253 некоторых различительных имен.X509Certificate. Если null, подойдет любое различительное имя издателя. Если issuerDN не является null, оно должно содержать различительное имя в формате RFC 2253.
- Параметры:
-
issuerDN— различительное имя в формате RFC 2253 (илиnull) - Исключения:
-
IOException— если возникает ошибка разбора (неверная форма DN) - Внешние спецификации
setIssuer
public void setIssuer(byte[] issuerDN) throws IOException
X509Certificate. Если указано null, критерий issuer отключается, и подойдет любое различительное имя издателя. Если issuerDN не является null, оно должно содержать одно различительное имя в кодировке DER, определенное в X.501. Нотация ASN.1 для этой структуры выглядит следующим образом.
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
....
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1.. MAX)),
bmpString BMPString (SIZE (1..MAX)) }
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
issuerDN— массив байтов, содержащий различительное имя в формате ASN.1 DER (илиnull) - Исключения:
-
IOException— если возникает ошибка кодирования (неверная форма DN)
setSubject
public void setSubject(X500Principal subject)
X509Certificate. Если null, подойдет любое различительное имя субъекта.- Параметры:
-
subject— различительное имя в виде X500Principal (илиnull) - Начиная с версии:
- 1.5
setSubject
@Deprecated(since="16") public void setSubject(String subjectDN) throws IOException
setSubject(X500Principal) или setSubject(byte[]). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке в строковом представлении RFC 2253 некоторых различительных имен.X509Certificate. Если null, подойдет любое различительное имя субъекта. Если subjectDN не является null, оно должно содержать различительное имя в формате RFC 2253.
- Параметры:
-
subjectDN— различительное имя в формате RFC 2253 (илиnull) - Исключения:
-
IOException— если возникает ошибка разбора (неверная форма DN) - Внешние спецификации
setSubject
public void setSubject(byte[] subjectDN) throws IOException
X509Certificate. Если null, подойдет любое различительное имя субъекта. Если subjectDN не является null, оно должно содержать одно различительное имя в кодировке DER, определенное в X.501. Нотацию ASN.1 для этой структуры см. в разделе setIssuer(byte[]).
- Параметры:
-
subjectDN— массив байтов, содержащий различительное имя в формате ASN.1 DER (илиnull) - Исключения:
-
IOException— если возникает ошибка кодирования (неверная форма DN)
setSubjectKeyIdentifier
public void setSubjectKeyIdentifier(byte[] subjectKeyID)
X509Certificate должен содержать расширение SubjectKeyIdentifier, содержимое которого соответствует указанному значению критерия. Если значение критерия равно null, проверка subjectKeyIdentifier не выполняется. Если subjectKeyID не является null, он должен содержать одно значение в кодировке DER, соответствующее содержимому значения расширения SubjectKeyIdentifier (без идентификатора объекта, настройки критичности и обрамляющей строки OCTET STRING). Нотация ASN.1 для этой структуры приведена ниже.
SubjectKeyIdentifier ::= KeyIdentifier
KeyIdentifier ::= OCTET STRING
Поскольку формат идентификаторов ключа субъекта не задан ни одним стандартом, X509CertSelector не анализирует их. Вместо этого значения сравниваются побайтно.
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
subjectKeyID— идентификатор ключа субъекта (илиnull) - См. также:
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
X509Certificate должен содержать расширение AuthorityKeyIdentifier, значение которого соответствует указанному значению критерия. Если значение критерия равно null, проверка authorityKeyIdentifier не выполняется. Если authorityKeyID не является null, он должен содержать одно значение в кодировке DER, соответствующее содержимому значения расширения AuthorityKeyIdentifier (без идентификатора объекта, настройки критичности и обрамляющей строки OCTET STRING). Нотация ASN.1 для этой структуры приведена ниже.
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING
X509CertSelector не анализирует идентификаторы ключа центра сертификации. Вместо этого значения сравниваются побайтно.
Если поле keyIdentifier объекта AuthorityKeyIdentifier заполнено, значение обычно берется из расширения SubjectKeyIdentifier сертификата издателя. Однако обратите внимание, что результат X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object
Identifier>) для сертификата издателя НЕ следует напрямую использовать в качестве входных данных для setAuthorityKeyIdentifier. Это связано с тем, что SubjectKeyIdentifier содержит только строку OCTET STRING KeyIdentifier, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Чтобы использовать значение расширения SubjectKeyIdentifier сертификата издателя, необходимо извлечь значение встроенной строки OCTET STRING KeyIdentifier, а затем закодировать эту строку OCTET STRING в формате DER внутри SEQUENCE. Подробнее о SubjectKeyIdentifier см. в разделе setSubjectKeyIdentifier(byte[] subjectKeyID).
Также обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
authorityKeyID— идентификатор ключа центра сертификации (илиnull) - См. также:
setCertificateValid
public void setCertificateValid(Date certValid)
X509Certificate. Если null, проверка certificateValid не выполняется. Обратите внимание, что указанное здесь значение Date клонируется для защиты от последующих изменений.
- Параметры:
-
certValid—Dateдля проверки (илиnull) - См. также:
setPrivateKeyValid
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate. Если null, проверка privateKeyValid не выполняется. Обратите внимание, что указанное здесь значение Date клонируется для защиты от последующих изменений.
- Параметры:
-
privateKeyValid—Dateдля проверки (илиnull) - См. также:
setSubjectPublicKeyAlgID
public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не выполняется.- Параметры:
-
oid— идентификатор объекта (OID) алгоритма для проверки (илиnull). OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
setSubjectPublicKey
public void setSubjectPublicKey(PublicKey key)
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не выполняется.- Параметры:
-
key— открытый ключ субъекта для проверки (илиnull) - См. также:
setSubjectPublicKey
public void setSubjectPublicKey(byte[] key) throws IOException
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не выполняется. Поскольку этот метод позволяет указать открытый ключ в виде массива байтов, его можно использовать для ключей неизвестных типов.
Если key не является null, он должен содержать одну структуру SubjectPublicKeyInfo в кодировке DER, определенную в X.509. Нотация ASN.1 для этой структуры выглядит следующим образом.
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
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
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
key— массив байтов, содержащий открытый ключ субъекта в формате ASN.1 DER (илиnull) - Исключения:
-
IOException— если возникает ошибка кодирования (неверная форма открытого ключа субъекта) - См. также:
setKeyUsage
public void setKeyUsage(boolean[] keyUsage)
X509Certificate должен допускать указанные значения keyUsage. Если null, проверка keyUsage не выполняется. Обратите внимание, что X509Certificate без расширения keyUsage неявно допускает все значения keyUsage. Обратите внимание, что указанный здесь массив логических значений клонируется для защиты от последующих изменений.
- Параметры:
-
keyUsage— массив логических значений в том же формате, что и массив, возвращаемый методомX509Certificate.getKeyUsage(). Илиnull. - См. также:
setExtendedKeyUsage
public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificate должен допускать указанные назначения ключа в своем расширении extended key usage. Если keyPurposeSet пуст или равен null, проверка extendedKeyUsage не выполняется. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно допускает все назначения ключа. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
keyPurposeSet—Setидентификаторов объектов (OID) назначений ключа в строковом формате (илиnull). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames или addSubjectAlternativeName. Если этот режим включен, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если он отключен, X509Certificate должен содержать как минимум одно из указанных альтернативных имен субъекта. По умолчанию флаг matchAllNames имеет значение true.
- Параметры:
-
matchAllNames— еслиtrue, флаг включен; еслиfalse, флаг отключен. - См. также:
setSubjectAlternativeNames
public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
setMatchAllSubjectAltNames), X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них. Этот метод позволяет вызывающему коду одним вызовом задать полный набор альтернативных имен субъекта для критерия subjectAlternativeNames. Указанное значение заменяет предыдущее значение критерия subjectAlternativeNames.
Параметр names (если он не равен null) представляет собой Collection с одной записью для каждого имени, включаемого в критерий альтернативных имен субъекта. Каждая запись — это List, первый элемент которого является Integer (тип имени, 0–8), а второй — String или массивом байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Допускается несколько имен одного типа. Если в качестве значения этого аргумента указано null, проверка subjectAlternativeNames выполняться не будет.
Каждое альтернативное имя субъекта в Collection можно указать как String или как массив байтов в кодировке ASN.1. Подробнее об используемых форматах см. в описаниях методов addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Примечание: для различительных имен указывайте массив байтов, а не строку. Дополнительные сведения см. в примечании к методу addSubjectAlternativeName(int, String).
Обратите внимание, что параметр names может содержать дублирующиеся имена (одинаковые имя и тип имени), однако они могут быть удалены из Collection имен, возвращаемого методом getSubjectAlternativeNames.
Обратите внимание, что Collection копируется рекурсивно для защиты от последующих изменений.
- Параметры:
-
names—Collectionимен (илиnull) - Исключения:
-
IOException— если возникает ошибка разбора - См. также:
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, String name) throws IOException
setMatchAllSubjectAltNames), X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них. Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия subjectAlternativeNames. Если указанное имя дублируется, оно может быть проигнорировано.
Имя задается в строковом формате. Для имен RFC 822, DNS и URI используются общепринятые строковые форматы соответствующих типов (с учетом ограничений, указанных в RFC 5280). Имена IPv4-адресов задаются в точечной десятичной нотации. Имена OID задаются в виде последовательности неотрицательных целых чисел, разделенных точками. Имена каталогов (различительные имена) задаются в формате RFC 2253. Для otherNames, имен X.400, имен участников EDI, имен IPv6-адресов и имен других типов стандартный строковый формат не определен. Их следует задавать с помощью метода addSubjectAlternativeName(int type, byte [] name).
Примечание: для различительных имен используйте вместо этого метод addSubjectAlternativeName(int, byte[]). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке в строковом представлении RFC 2253 некоторых различительных имен.
- Параметры:
-
type— тип имени (0–8, как указано в RFC 5280, разделе 4.2.1.6) -
name— имя в строковом формате (неnull) - Исключения:
-
IOException— если возникает ошибка разбора - Внешние спецификации
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, byte[] name) throws IOException
setMatchAllSubjectAltNames), X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них. Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия subjectAlternativeNames. Если указанное имя дублируется, оно может быть проигнорировано.
Имя задается в виде массива байтов. Этот массив байтов должен содержать имя в кодировке DER, как оно представлено в структуре GeneralName, определенной в RFC 5280 и X.509. Закодированный массив байтов должен содержать только закодированное значение имени и не должен включать тег, связанный с именем в структуре GeneralName. Определение этой структуры на языке ASN.1 приведено ниже.
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
type— тип имени (0–8, как перечислено выше) -
name— массив байтов, содержащий имя в кодировке ASN.1 DER - Исключения:
-
IOException— если возникает ошибка разбора
setNameConstraints
public void setNameConstraints(byte[] bytes) throws IOException
X509Certificate должен иметь субъект и альтернативные имена субъекта, соответствующие указанным ограничениям имен. Ограничения имен задаются в виде массива байтов. Этот массив байтов должен содержать ограничения имен в кодировке DER, как они представлены в структуре NameConstraints, определенной в RFC 5280 и X.509. Определение этой структуры на языке ASN.1 приведено ниже.
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree ::= SEQUENCE {
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }
BaseDistance ::= INTEGER (0..MAX)
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
bytes— массив байтов, содержащий кодировку ASN.1 DER расширения NameConstraints, используемого для проверки ограничений имен. Включается только значение расширения, без OID и флага критичности. Может быть равноnull; в этом случае проверка ограничений имен выполняться не будет. - Исключения:
-
IOException— если возникает ошибка разбора - См. также:
setBasicConstraints
public void setBasicConstraints(int minMaxPathLen)
X509Certificates должен содержать расширение basicConstraints с pathLen не меньше этого значения. Если значение равно -2, принимаются только сертификаты конечных субъектов. Если значение равно -1, проверка не выполняется. Это ограничение полезно при построении пути сертификации в прямом направлении (от целевого сертификата к якорю доверия). Если частичный путь уже построен, значение maxPathLen любого сертификата-кандидата должно быть больше или равно количеству сертификатов в частичном пути.
- Параметры:
-
minMaxPathLen— значение ограничения basic constraints - Исключения:
-
IllegalArgumentException— если значение меньше -2 - См. также:
setPolicy
public void setPolicy(Set<String> certPolicySet) throws IOException
X509Certificate должен включать как минимум одну из указанных политик в расширении certificate policies. Если certPolicySet пуст, X509Certificate должен включать хотя бы какую-либо указанную политику в расширении certificate policies. Если certPolicySet равен null, проверка политики выполняться не будет. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
certPolicySet—Setидентификаторов объектов (OID) политик сертификатов в строковом формате (илиnull). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если при разборе OID возникает ошибка, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
setPathToNames
public void setPathToNames(Collection<List<?>> names) throws IOException
X509Certificate не должен содержать ограничений имен, препятствующих построению пути к указанным именам. Этот метод позволяет вызывающему коду одним вызовом метода указать полный набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное значение заменяет предыдущее значение критерия pathToNames.
Это ограничение полезно при построении пути сертификации в прямом направлении (от целевого объекта к якорю доверия). Если частичный путь уже построен, ни один кандидатный сертификат не должен содержать ограничений имен, препятствующих построению пути к любому из имен в частичном пути.
Параметр names (если он не null) представляет собой Collection с одной записью для каждого имени, которое следует включить в критерий pathToNames. Каждая запись представляет собой List, первый элемент которого — Integer (тип имени, 0–8), а второй — String или массив байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Могут быть указаны несколько имен одного типа. Если в качестве значения этого аргумента передано null, проверка pathToNames выполняться не будет.
Каждое имя в Collection может быть указано как String или как массив байтов в кодировке ASN.1. Дополнительные сведения об используемых форматах см. в описаниях методов addPathToName(int type, String name) и addPathToName(int type, byte [] name).
Примечание: для различительных имен указывайте массив байтов, а не строку. Дополнительные сведения см. в примечании к описанию метода addPathToName(int, String).
Обратите внимание, что параметр names может содержать повторяющиеся имена (одинаковые имя и тип имени), однако они могут быть удалены из Collection имен, возвращаемого методом getPathToNames.
Обратите внимание, что для защиты от последующих изменений выполняется глубокое копирование Collection.
- Параметры:
-
names-Collectionс одной записью для каждого имени (илиnull) - Исключения:
-
IOException- если произошла ошибка синтаксического анализа - См. также:
addPathToName
public void addPathToName(int type, String name) throws IOException
X509Certificate не должен содержать ограничений имен, препятствующих построению пути к указанному имени. Этот метод позволяет вызывающему коду добавить имя в набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное имя добавляется к предыдущему значению критерия pathToNames. Повторяющееся имя может быть проигнорировано.
Имя задается в строковом формате. Для имен RFC 822, DNS и URI используются устоявшиеся строковые форматы соответствующих типов (с учетом ограничений, изложенных в RFC 5280). Имена IPv4-адресов задаются в точечной десятичной нотации. Имена OID представляются последовательностью неотрицательных целых чисел, разделенных точками. Имена каталогов (различительные имена) задаются в формате RFC 2253. Для otherNames, имен X.400, имен сторон EDI, имен IPv6-адресов и имен любых других типов стандартный строковый формат не определен. Их следует указывать с помощью метода addPathToName(int type, byte [] name).
Примечание: для различительных имен используйте вместо этого addPathToName(int, byte[]). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке при представлении некоторых различительных имен в строковом формате RFC 2253.
- Параметры:
-
type- тип имени (0–8, как указано в разделе 4.2.1.6 RFC 5280) -
name- имя в строковом формате - Исключения:
-
IOException- если произошла ошибка синтаксического анализа
addPathToName
public void addPathToName(int type, byte[] name) throws IOException
X509Certificate не должен содержать ограничений имен, препятствующих построению пути к указанному имени. Этот метод позволяет вызывающему коду добавить имя в набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное имя добавляется к предыдущему значению критерия pathToNames. Повторяющееся имя может быть проигнорировано.
Имя передается в виде массива байтов. Этот массив байтов должен содержать имя в кодировке DER, как оно представлено в структуре GeneralName, определенной в RFC 5280 и X.509. Определение этой структуры на языке ASN.1 приведено в документации к методу addSubjectAlternativeName(int type, byte [] name).
Обратите внимание, что переданный массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
type- тип имени (0–8, как указано в разделе 4.2.1.6 RFC 5280) -
name- массив байтов, содержащий имя в кодировке ASN.1 DER - Исключения:
-
IOException- если произошла ошибка синтаксического анализа
getCertificate
public X509Certificate getCertificate()
X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не выполняется.- Возвращает:
X509Certificateдля сопоставления (илиnull)- См. также:
getSerialNumber
public BigInteger getSerialNumber()
X509Certificate. Если null, подойдет любой серийный номер сертификата.- Возвращает:
- серийный номер сертификата для сопоставления (или
null) - См. также:
getIssuer
public X500Principal getIssuer()
X500Principal. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя.- Возвращает:
- требуемое различительное имя издателя в виде X500Principal (или
null) - Начиная с:
- 1.5
getIssuerAsString
@Deprecated(since="16") public String getIssuerAsString()
getIssuer() или getIssuerAsBytes(). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке при представлении некоторых различительных имен в строковом формате RFC 2253.String. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя. Если возвращаемое значение не равно null, оно представляет собой различительное имя в формате RFC 2253.
- Возвращает:
- требуемое различительное имя издателя в формате RFC 2253 (или
null) - Внешние спецификации
getIssuerAsBytes
public byte[] getIssuerAsBytes() throws IOException
X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя. Если возвращаемое значение не равно null, это массив байтов, содержащий одно различительное имя в кодировке DER, определенной в X.501. Обозначение этой структуры на языке ASN.1 приведено в документации к методу setIssuer(byte[]).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий требуемое различительное имя издателя в формате ASN.1 DER (или
null) - Исключения:
-
IOException- если произошла ошибка кодирования
getSubject
public X500Principal getSubject()
X500Principal. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта.- Возвращает:
- требуемое различительное имя субъекта в виде X500Principal (или
null) - Начиная с:
- 1.5
getSubjectAsString
@Deprecated(since="16") public String getSubjectAsString()
getSubject() или getSubjectAsBytes(). Не следует полагаться на этот метод, поскольку он может не сопоставить некоторые сертификаты из-за потери информации о кодировке при представлении некоторых различительных имен в строковом формате RFC 2253.String. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта. Если возвращаемое значение не равно null, оно представляет собой различительное имя в формате RFC 2253.
- Возвращает:
- требуемое различительное имя субъекта в формате RFC 2253 (или
null) - Внешние спецификации
getSubjectAsBytes
public byte[] getSubjectAsBytes() throws IOException
X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта. Если возвращаемое значение не равно null, это массив байтов, содержащий одно различительное имя в кодировке DER, определенной в X.501. Обозначение этой структуры на языке ASN.1 приведено в документации к методу setSubject(byte[]).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий требуемое различительное имя субъекта в формате ASN.1 DER (или
null) - Исключения:
-
IOException- если произошла ошибка кодирования
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()
X509Certificate должен содержать расширение SubjectKeyIdentifier с указанным значением. Если null, проверка subjectKeyIdentifier выполняться не будет. Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()
X509Certificate должен содержать расширение AuthorityKeyIdentifier с указанным значением. Если null, проверка authorityKeyIdentifier выполняться не будет. Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
getCertificateValid
public Date getCertificateValid()
X509Certificate. Если null, проверка certificateValid выполняться не будет. Обратите внимание, что возвращаемый Date клонируется для защиты от последующих изменений.
- Возвращает:
Dateдля проверки (илиnull)- См. также:
getPrivateKeyValid
public Date getPrivateKeyValid()
X509Certificate. Если null, проверка privateKeyValid выполняться не будет. Обратите внимание, что возвращаемый Date клонируется для защиты от последующих изменений.
- Возвращает:
Dateдля проверки (илиnull)- См. также:
getSubjectPublicKeyAlgID
public String getSubjectPublicKeyAlgID()
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID выполняться не будет.- Возвращает:
- идентификатор объекта (OID) алгоритма подписи для проверки (или
null). OID представляется набором неотрицательных целых чисел, разделенных точками. - См. также:
getSubjectPublicKey
public PublicKey getSubjectPublicKey()
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey выполняться не будет.- Возвращает:
- открытый ключ субъекта для проверки (или
null) - См. также:
getKeyUsage
public boolean[] getKeyUsage()
X509Certificate должен допускать указанные значения keyUsage. Если значение равно null, проверка keyUsage выполняться не будет. Обратите внимание, что возвращаемый булев массив клонируется для защиты от последующих изменений.
- Возвращает:
- булев массив в том же формате, что и булев массив, возвращаемый методом
X509Certificate.getKeyUsage(). Илиnull. - См. также:
getExtendedKeyUsage
public Set<String> getExtendedKeyUsage()
X509Certificate должен допускать указанные назначения ключа в своем расширении расширенного использования ключа. Если возвращаемое значение keyPurposeSet пусто или равно null, проверка extendedKeyUsage выполняться не будет. Обратите внимание, что X509Certificate без расширения extendedKeyUsage подразумевает разрешение всех назначений ключа.- Возвращает:
- неизменяемый
SetOID назначений ключа в строковом формате (илиnull) - См. также:
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()
X509Certificate содержать все или хотя бы одно из имен subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName. Если true, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если false, X509Certificate должен содержать хотя бы одно из указанных альтернативных имен субъекта.- Возвращает:
-
true, если флаг включен;false, если флаг отключен. По умолчанию флаг имеет значениеtrue. - См. также:
getSubjectAlternativeNames
public Collection<List<?>> getSubjectAlternativeNames()
getMatchAllSubjectAltNames) X509Certificate должен содержать все или хотя бы одно из указанных subjectAlternativeNames. Если возвращаемое значение равно null, проверка subjectAlternativeNames выполняться не будет. Если возвращаемое значение не равно null, оно представляет собой Collection с одной записью для каждого имени, которое следует включить в критерий альтернативных имен субъекта. Каждая запись представляет собой List, первый элемент которого — Integer (тип имени, 0–8), а второй — String или массив байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Могут быть указаны несколько имен одного типа. Обратите внимание, что возвращаемое значение Collection может содержать повторяющиеся имена (одинаковые имя и тип имени).
Каждое альтернативное имя субъекта в Collection может быть указано как String или как массив байтов в кодировке ASN.1. Дополнительные сведения об используемых форматах см. в описаниях методов addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Обратите внимание, что для защиты от последующих изменений выполняется глубокое копирование Collection.
- Возвращает:
Collectionимен (илиnull)- См. также:
getNameConstraints
public byte[] getNameConstraints()
X509Certificate должен иметь субъект и альтернативные имена субъекта, соответствующие указанным ограничениям имен. Ограничения имен возвращаются в виде массива байтов. Этот массив байтов содержит ограничения имен в кодировке DER, как они представлены в структуре NameConstraints, определенной в RFC 5280 и X.509. Обозначение этой структуры на языке ASN.1 приведено в документации к методу setNameConstraints(byte [] bytes).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий кодировку ASN.1 DER расширения NameConstraints, используемого для проверки ограничений имен.
null, если проверка ограничений имен выполняться не будет. - См. также:
getBasicConstraints
public int getBasicConstraints()
X509Certificates должен содержать расширение basicConstraints со значением pathLen не меньше указанного. Если значение равно -2, допускаются только сертификаты конечных сущностей. Если значение равно -1, проверка basicConstraints не выполняется.- Возвращает:
- значение ограничения basic constraints
- См. также:
getPolicy
public Set<String> getPolicy()
X509Certificate должен включать хотя бы одну из указанных политик в расширение политик сертификата. Если возвращаемое значение Set пусто, X509Certificate должен включать хотя бы одну из указанных политик в расширение политик сертификата. Если возвращаемое значение Set равно null, проверка политики выполняться не будет.- Возвращает:
- неизменяемый
SetOID политик сертификата в строковом формате (илиnull) - См. также:
getPathToNames
public Collection<List<?>> getPathToNames()
X509Certificate не должен содержать ограничений имен, препятствующих построению пути к указанным именам. Если возвращаемое значение равно null, проверка pathToNames выполняться не будет. Если возвращаемое значение не равно null, оно представляет собой Collection с одной записью для каждого имени, которое следует включить в критерий pathToNames. Каждая запись представляет собой List, первый элемент которого — Integer (тип имени, 0–8), а второй — String или массив байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Могут быть указаны несколько имен одного типа. Обратите внимание, что возвращаемое значение Collection может содержать повторяющиеся имена (одинаковые имя и тип имени).
Каждое имя в Collection может быть указано как String или как массив байтов в кодировке ASN.1. Дополнительные сведения об используемых форматах см. в описаниях методов addPathToName(int type, String name) и addPathToName(int type, byte [] name).
Обратите внимание, что для защиты от последующих изменений выполняется глубокое копирование Collection.
- Возвращает:
Collectionимен (илиnull)- См. также:
toString
match
public boolean match(Certificate cert)
Certificate.- Определено в:
-
matchв интерфейсеCertSelector - Параметры:
-
cert-Certificateдля проверки - Возвращает:
-
true, если следует выбратьCertificate; в противном случае —false
clone
public Object clone()
- Определено в:
-
cloneв интерфейсеCertSelector - Переопределяет:
-
cloneв классеObject - Возвращает:
- копию
- См. также:
© 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/java/security/cert/X509CertSelector.html
getIssuer()илиgetIssuerAsBytes().