|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class X509Certificate extends Certificate implements X509Extension
Абстрактный class для сертификатов X.509. Это обеспечивает стандартный способ получить доступ ко всем атрибутам сертификата X.509.
В июне 1996 основной X.509 v3 формат был завершен ISO/IEC и ANSI X9, который описывается ниже в ASN.1:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }
Эти сертификаты широко используются, чтобы поддерживать аутентификацию и другую функциональность в системах Защиты в сети Интернет. Общее применение включает Почту с усовершенствованной защитой (PEM), Безопасность Транспортного уровня (SSL), подписывание кода для распределения достоверного программного обеспечения, и Защищает Электронные Транзакции (НАБОР).
Этими сертификатами управляют и ручались за Центрами сертификации (АВАРИЯ). АВАРИЯ Является службами, которые создают сертификаты, помещая данные в стандартный формат X.509 и затем в цифровой форме подписывая те данные. Действие АВАРИИ как доверенные третьи стороны, представляющиеся между принципалами, у кого нет никаких сведений из первоисточника друг друга. Сертификаты 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,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version must be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version must be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version must be v3
}
Сертификаты инстанцируют, используя фабрику сертификата. Следующее является примером того, как инстанцировать сертификата X.509:
try (InputStream inStream = new FileInputStream("fileName-of-cert")) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
}
Certificate, CertificateFactory, X509Extension, Сериализированная ФормаСертификат. CertificateRep| Модификатор | Конструктор и Описание |
|---|---|
protected |
X509Certificate()
Конструктор для сертификатов X.509.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
abstract void |
checkValidity()
Проверки, что сертификат в настоящий момент допустим.
|
abstract void |
checkValidity(Date date)
Проверки, что данная дата в пределах срока действия сертификата.
|
abstract int |
getBasicConstraints()
Получает ограничительную длину пути сертификата от критического
BasicConstraints расширение, (OID = 2.5.29.19). |
List<String> |
getExtendedKeyUsage()
Получает неподдающийся изменению список Строк, представляющих ОБЪЕКТНЫЕ ИДЕНТИФИКАТОРЫ
ExtKeyUsageSyntax поле расширенного ключевого расширения использования, (OID = 2.5.29.37). |
Collection<List<?>> |
getIssuerAlternativeNames()
Получает неизменный набор имен альтернативы выпускающего от
IssuerAltName расширение, (OID = 2.5.29.18). |
abstract Principal |
getIssuerDN()
Клеветавший, замененный getIssuerX500Principal ().
|
abstract boolean[] |
getIssuerUniqueID()
Добирается
issuerUniqueID значение от сертификата. |
X500Principal |
getIssuerX500Principal()
Возвращает выпускающего (отличительное имя выпускающего) значение от сертификата как
X500Principal. |
abstract boolean[] |
getKeyUsage()
Получает булев массив, представляющий биты
KeyUsage расширение, (OID = 2.5.29.15). |
abstract Date |
getNotAfter()
Добирается
notAfter дата со срока действия сертификата. |
abstract Date |
getNotBefore()
Добирается
notBefore дата со срока действия сертификата. |
abstract BigInteger |
getSerialNumber()
Добирается
serialNumber значение от сертификата. |
abstract String |
getSigAlgName()
Получает имя алгоритма подписи для алгоритма подписи сертификата.
|
abstract String |
getSigAlgOID()
Получает строку OID алгоритма подписи от сертификата.
|
abstract byte[] |
getSigAlgParams()
Получает DER-закодированные параметры алгоритма подписи от алгоритма подписи этого сертификата.
|
abstract byte[] |
getSignature()
Добирается
signature значение (необработанные биты подписи) от сертификата. |
Collection<List<?>> |
getSubjectAlternativeNames()
Получает неизменный набор подчиненных альтернативных имен от
SubjectAltName расширение, (OID = 2.5.29.17). |
abstract Principal |
getSubjectDN()
Клеветавший, замененный getSubjectX500Principal ().
|
abstract boolean[] |
getSubjectUniqueID()
Добирается
subjectUniqueID значение от сертификата. |
X500Principal |
getSubjectX500Principal()
Возвращает предмет (подчиненное отличительное имя) значение от сертификата как
X500Principal. |
abstract byte[] |
getTBSCertificate()
Получает DER-закодированную информацию сертификата,
tbsCertificate от этого сертификата. |
abstract int |
getVersion()
Добирается
version (номер версии) значение от сертификата. |
void |
verify(PublicKey key, Provider sigProvider)
Проверяет, что этот сертификат был подписан, используя закрытый ключ, который соответствует указанному открытому ключу.
|
equals, getEncoded, getPublicKey, getType, hashCode, toString, verify, verify, writeReplaceclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtensionpublic abstract void checkValidity()
throws CertificateExpiredException,
CertificateNotYetValidException
Срок действия состоит из двух дат/временных стоимостей: первые и последние даты (и времена), на котором сертификат допустим. Это определяется в ASN.1 как:
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
CertificateExpiredException - если сертификат истек.CertificateNotYetValidException - если сертификат еще не допустим.public abstract void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException
date - Дата, чтобы проверить по видеть, допустим ли этот сертификат в той дате/времени.CertificateExpiredException - если сертификат истек относительно date предоставленный.CertificateNotYetValidException - если сертификат еще не допустим относительно date предоставленный.checkValidity()public abstract int getVersion()
version (номер версии) значение от сертификата. Определение ASN.1 для этого: version [0] EXPLICIT Version DEFAULT v1Version ::= INTEGER { v1(0), v2(1), v3(2) }
public abstract BigInteger getSerialNumber()
serialNumber значение от сертификата. Порядковый номер является целым числом, присвоенным центром сертификации каждому сертификату. Это должно быть уникально для каждого сертификата, выпущенного данным CA (то есть, имя выпускающего и порядковый номер идентифицируют уникальный сертификат). Определение ASN.1 для этого: serialNumber CertificateSerialNumberCertificateSerialNumber ::= INTEGER
public abstract Principal getIssuerDN()
issuer как реализация определенный Объект принципала, на который не должен положиться переносимый код. Добирается issuer (отличительное имя выпускающего), оценивают от сертификата. Имя выпускающего идентифицирует объект, который подписался (и вышел), сертификат.
Поле имени выпускающего содержит отличительное имя X.500 (DN). Определение ASN.1 для этого:
issuer NameName ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeValueAssertion AttributeValueAssertion ::= SEQUENCE { AttributeType, AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY
Name описывает иерархическое имя, составленное из атрибутов, таких как название страны, и соответствующие значения, такие как US. Тип AttributeValue компонент определяется AttributeType; вообще это будет a directoryString. A directoryString обычно один из PrintableString, TeletexString или UniversalString.public X500Principal getIssuerX500Principal()
X500Principal. Рекомендуется, чтобы подклассы переопределили этот метод.
X500Principal представление отличительного имени выпускающегоpublic abstract Principal getSubjectDN()
subject как реализация определенный Объект принципала, на который не должен положиться переносимый код. Добирается subject (подвергните отличительное имя), значение от сертификата. Если subject значение пусто, тогда getName() метод возвращенного Principal возразите возвращает пустую строку ("").
Определение ASN.1 для этого:
subject Name
См. getIssuerDN для Name и другие соответствующие определения.
public X500Principal getSubjectX500Principal()
X500Principal. Если подчиненное значение пусто, то getName() метод возвращенного X500Principal возразите возвращает пустую строку (""). Рекомендуется, чтобы подклассы переопределили этот метод.
X500Principal представление подчиненного отличительного имениpublic abstract Date getNotBefore()
notBefore дата со срока действия сертификата. Соответствующие определения ASN.1: validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
checkValidity()public abstract Date getNotAfter()
notAfter дата со срока действия сертификата. См. getNotBefore для соответствующих определений ASN.1.checkValidity()public abstract byte[] getTBSCertificate()
throws CertificateEncodingException
tbsCertificate от этого сертификата. Это может использоваться, чтобы проверить подпись независимо.CertificateEncodingException - если ошибка кодирования происходит.public abstract byte[] getSignature()
signature значение (необработанные биты подписи) от сертификата. Определение ASN.1 для этого: signature BIT STRING
public abstract String getSigAlgName()
signatureAlgorithm AlgorithmIdentifierAlgorithmIdentifier ::= 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
Имя алгоритма определяется от algorithm Строка OID.
public abstract String getSigAlgOID()
См. getSigAlgName для соответствующих определений ASN.1.
public abstract byte[] getSigAlgParams()
AlgorithmParameters и инстанцируйте с именем, возвращенным getSigAlgName. См. getSigAlgName для соответствующих определений ASN.1.
public abstract boolean[] getIssuerUniqueID()
issuerUniqueID значение от сертификата. Уникальный идентификатор выпускающего присутствует в сертификате, чтобы обработать возможность повторного использования имен выпускающего в течение долгого времени. RFC 3280 рекомендует, чтобы имена не были снова использованы и что приспосабливание сертификатам не использует уникальные идентификаторы. Приложения, соответствующие тому профилю, должны быть способными к парсингу уникальных идентификаторов и созданию сравнений. Определение ASN.1 для этого:
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
public abstract boolean[] getSubjectUniqueID()
subjectUniqueID значение от сертификата. Определение ASN.1 для этого:
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
public abstract boolean[] getKeyUsage()
KeyUsage расширение, (OID = 2.5.29.15). Ключевое расширение использования определяет цель (например, шифровка, подпись, подписание сертификата) ключа, содержавшегося в сертификате. Определение ASN.1 для этого:
KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation (1),
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8) }
RFC 3280 рекомендует, чтобы когда использующийся, это было отмечено как критическое расширение.public List<String> getExtendedKeyUsage() throws CertificateParsingException
ExtKeyUsageSyntax поле расширенного ключевого расширения использования, (OID = 2.5.29.37). Это указывает на одну или более целей, в которых сертифицированный открытый ключ может использоваться, в дополнение к или вместо основных целей, обозначенных в ключевом поле расширения использования. Определение ASN.1 для этого: ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeIdКлючевые цели могут быть определены любой организацией с потребностью. Объектные идентификаторы, используемые, чтобы идентифицировать ключевые цели, должны быть присвоены в соответствии с IANA или ITU-T Rec. X.660 | ISO/IEC/ITU 9834-1.KeyPurposeId ::= OBJECT IDENTIFIER
Этот метод был добавлен к версии 1.4 Java 2 Платформы Standard Edition. Чтобы поддержать назад совместимость с существующими поставщиками услуг, этот метод не abstract и это обеспечивает реализацию по умолчанию. Подклассы должны переопределить этот метод с корректной реализацией.
CertificateParsingException - если расширение не может декодироватьсяpublic abstract int getBasicConstraints()
BasicConstraints расширение, (OID = 2.5.29.19). Основное ограничительное расширение идентифицирует, является ли предметом сертификата Центр сертификации (CA) и как глубоко путь сертификации может существовать через тот CA. pathLenConstraint поле (см. ниже) значимо только если cA устанавливается в ИСТИНУ. В этом случае это дает максимальное количество сертификатов CA, которые могут следовать за этим сертификатом в пути сертификации. Значение нуля указывает, что только сертификат объекта конца может следовать в пути.
Определение ASN.1 для этого:
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
pathLenConstraint если расширение BasicConstraints присутствует в сертификате, и предметом сертификата является CA, иначе-1. Если предметом сертификата является CA и pathLenConstraint не появляется, Integer.MAX_VALUE возвращается, чтобы указать, что нет никакого предела позволенной длине пути сертификации.public Collection<List<?>> getSubjectAlternativeNames() throws CertificateParsingException
SubjectAltName расширение, (OID = 2.5.29.17). Определение ASN.1 SubjectAltName расширение:
SubjectAltName ::= GeneralNames
GeneralNames :: = SEQUENCE SIZE (1..MAX) OF GeneralName
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}
Если этот сертификат не содержит a SubjectAltName расширение, null возвращается. Иначе, a Collection возвращается с записью, представляющей каждого GeneralName включенный в расширение. Каждая запись является a List чья первая запись Integer (тип имени, 0-8) и чья вторая запись является a String или байтовый массив (имя, в строке или ASN.1 DER закодированная форма, соответственно).
, DNS, и имена URI возвращаются как Strings, используя известные строковые форматы для тех типов (подвергают ограничениям, включенным в RFC 3280). Имена адреса IPv4 возвращаются, используя отмеченную точкой нотацию четверки. Имена адреса IPv6 возвращаются в форме "a1:a2:...:a8", где a1-a8 являются шестнадцатеричными значениями, представляющими восемь 16-разрядных частей адреса. Имена OID возвращаются как Strings представленный, поскольку серия неотрицательных целых чисел отделилась к периодам. И имена каталогов (отличительные имена) возвращаются в строковом формате . Никакой стандартный строковый формат не определяется для otherNames, имен X.400, имен стороны EDI, или никакого другого типа имен. Они возвращаются как байтовые массивы, содержащие ASN.1 DER закодированная форма имени.
Отметьте что Collection возвращенный может содержать больше чем одно имя того же самого типа. Кроме того, отметьте что возвращенный Collection является неизменным, и любые записи, содержащие байтовые массивы, клонируются, чтобы защитить от последующих модификаций.
Этот метод был добавлен к версии 1.4 Java 2 Платформы Standard Edition. Чтобы поддержать назад совместимость с существующими поставщиками услуг, этот метод не abstract и это обеспечивает реализацию по умолчанию. Подклассы должны переопределить этот метод с корректной реализацией.
Collection из подчиненных альтернативных имен (или null)CertificateParsingException - если расширение не может декодироватьсяpublic Collection<List<?>> getIssuerAlternativeNames() throws CertificateParsingException
IssuerAltName расширение, (OID = 2.5.29.18). Определение ASN.1 IssuerAltName расширение:
IssuerAltName ::= GeneralNamesОпределение ASN.1
GeneralNames определяется в getSubjectAlternativeNames. Если этот сертификат не содержит IssuerAltName расширение, null возвращается. Иначе, a Collection возвращается с записью, представляющей каждого GeneralName включенный в расширение. Каждая запись является a List чья первая запись Integer (тип имени, 0-8) и чья вторая запись является a String или байтовый массив (имя, в строке или ASN.1 DER закодированная форма, соответственно). Для получения дополнительной информации о форматах, используемых для каждого типа имени, см. getSubjectAlternativeNames метод.
Отметьте что Collection возвращенный может содержать больше чем одно имя того же самого типа. Кроме того, отметьте что возвращенный Collection является неизменным, и любые записи, содержащие байтовые массивы, клонируются, чтобы защитить от последующих модификаций.
Этот метод был добавлен к версии 1.4 Java 2 Платформы Standard Edition. Чтобы поддержать назад совместимость с существующими поставщиками услуг, этот метод не abstract и это обеспечивает реализацию по умолчанию. Подклассы должны переопределить этот метод с корректной реализацией.
Collection из имен альтернативы выпускающего (или null)CertificateParsingException - если расширение не может декодироватьсяpublic void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
abstract и это обеспечивает реализацию по умолчанию.verify в class Certificatekey - PublicKey имел обыкновение выполнять проверку.sigProvider - провайдер подписи.NoSuchAlgorithmException - на неподдерживаемых алгоритмах подписи.InvalidKeyException - на неправильном ключе.SignatureException - на ошибках подписи.CertificateException - при кодировании ошибок.UnsupportedOperationException - если метод не поддерживается
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92