Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class X509Certificate extends Certificate implements X509Extension
Абстрактный класс для сертификатов 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:
InputStream inStream = null; try { inStream = new FileInputStream("fileName-of-cert"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); } finally { if (inStream != null) { inStream.close(); } }
Сертификат. 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 (номер версии) значение от сертификата. |
equals, getEncoded, getPublicKey, getType, hashCode, toString, verify, verify, writeReplace
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
public 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 закодированная форма, соответственно).
String
s, используя известные строковые форматы для тех типов (подвергают ограничениям, включенным в RFC 3280). Имена адреса IPv4 возвращаются, используя отмеченную точкой нотацию четверки. Имена адреса IPv6 возвращаются в форме "a1:a2:...:a8", где a1-a8 являются шестнадцатеричными значениями, представляющими восемь 16-разрядных частей адреса. Имена OID возвращаются как String
s представленный, поскольку серия неотрицательных целых чисел отделилась к периодам. И имена каталогов (отличительные имена) возвращаются в строковом формате
Отметьте что 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
- если расширение не может декодироваться
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.