|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security.cert
类 X509Certificate
java.lang.Object java.security.cert.Certificate java.security.cert.X509Certificate
- 所有已实现的接口:
- Serializable, X509Extension
-
public abstract class X509Certificate
- extends Certificate
- implements X509Extension
X.509 证书的抽象类。此类提供了一种访问 X.509 证书所有属性的标准方式。
1996 年 6 月,ISO/IEC 和 ANSI X9 完成了基本的 X.509 v3 格式,在 ASN.1 中描述如下:
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING }
这些证书被广泛使用以支持 Internet 安全系统中的身份验证和其他功能。常见的应用包括增强保密邮件 (PEM)、传输层安全 (SSL)、用于受信任软件发布的代码签名和安全电子交易 (SET)。
由证书颁发机构 (CA) 来管理和担保这些证书。CA 的工作是创建证书,方法是将数据置于 X.509 标准格式,然后以数字方式签署该数据。CA 充当受信任的第三方,在不能直接通信的主体之间传递信息。CA 证书可由其自身签名,也可由其他 CA 签名,如“根”CA。
在 RFC 2459,即 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"(位于 http://www.ietf.org/rfc/rfc2459.txt )中可找到更多信息。
tbsCertificate
的 ASN.1 定义是:
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 = new FileInputStream("fileName-of-cert"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); inStream.close();
- 另请参见:
-
Certificate
,CertificateFactory
,X509Extension
, 序列化表格
嵌套类摘要 |
---|
从类 java.security.cert.Certificate 继承的嵌套类/接口 |
---|
Certificate.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() 获得一个不可修改的 String 列表,表示已扩展的密钥使用扩展 (OID = 2.5.29.37) 中 ExtKeyUsageSyntax 字段的对象标识符(OBJECT IDENTIFIER)。 |
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) 的各个位的 boolean 数组。 |
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 (版本号)值。 |
从类 java.security.cert.Certificate 继承的方法 |
---|
equals, getEncoded, getPublicKey, getType, hashCode, toString, verify, verify, writeReplace |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.security.cert.X509Extension 继承的方法 |
---|
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension |
构造方法详细信息 |
---|
X509Certificate
protected X509Certificate()
- X.509 证书的构造方法。
方法详细信息 |
---|
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
- 要检查的 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) }
-
-
- 返回:
- 版本号,比如 1、2 或 3。
getSerialNumber
public abstract BigInteger getSerialNumber()
-
获得证书的
serialNumber
值。序列号是证书颁发机构为每个证书所分配的一个整数。给定的 CA 所发布的每个证书的序列号必须是惟一的(即发布方名称和序列号标识一个惟一的证书)。此内容的 ASN.1 定义如下:serialNumber CertificateSerialNumber
CertificateSerialNumber ::= INTEGER
-
-
- 返回:
- 序列号。
getIssuerDN
public abstract Principal getIssuerDN()
-
已过时,由 getIssuerX500Principal() 替代。此方法返回作为特定 Principal 对象实现的
issuer
,可移植的代码不应依靠该对象。获得证书的
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
描述了一个层次结构名,由属性(如国家/地区名)和相应值(如 US)组成。AttributeValue
组件的类型由AttributeType
来确定;一般是directoryString
。directoryString
通常是PrintableString
、TeletexString
或UniversalString
之一。 -
-
- 返回:
- 一个 Principal,其名称是发布方的标识名。
getIssuerX500Principal
public X500Principal getIssuerX500Principal()
-
以
X500Principal
的形式返回证书的发布方(发布方标识名)值。建议子类重写此方法。
-
-
- 返回:
-
一个表示发布方标识名的
X500Principal
- 从以下版本开始:
- 1.4
getSubjectDN
public abstract Principal getSubjectDN()
-
已过时,由 getSubjectX500Principal() 替代。此方法返回作为特定 Principal 对象实现的
subject
,可移植的代码不应依靠该对象。获得证书的
subject
(主体的标识名)值。如果subject
值为空,则返回的Principal
对象的getName()
方法将返回一个空字符串 ("")。此内容的 ASN.1 定义如下:
subject Name
有关
Name
和其他相关定义的信息,请参见getIssuerDN
。 -
-
- 返回:
- 一个 Principal,其名称是主体名。