- java.lang.Object
-
- javax.security.cert.Certificate
-
- javax.security.cert.X509Certificate
-
@Deprecated(since="9") public abstract class X509Certificate extends Certificate
Deprecated.Use the classes injava.security.cert
instead.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 }
这些证书广泛用于支持Internet安全系统中的身份验证和其他功能。 常见应用包括隐私增强邮件(PEM),传输层安全(SSL),可信软件分发的代码签名和安全电子交易(SET)。
这些证书由证书颁发机构 (CA)管理和担保。 CA是通过将数据置于X.509标准格式然后对该数据进行数字签名来创建证书的服务。 CA充当可信赖的第三方,在彼此之间没有直接了解的主体之间进行介绍。 CA证书可以由自己签名,也可以由其他CA(例如“根”CA)签名。
tbsCertificate
的ASN.1定义是: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();
要么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安全套接字扩展(JSSE)兼容。 相反,新应用程序应使用位于java.security.cert
的标准Java SE证书类。- 从以下版本开始:
- 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对象,并使用从输入流inStream
读取的数据对其进行初始化。abstract Principal
getIssuerDN()
已过时。从证书中获取issuer
(颁发者专有名称)值。abstract Date
getNotAfter()
已过时。从证书的有效期获取notAfter
日期。abstract Date
getNotBefore()
已过时。从证书的有效期获取notBefore
日期。abstract BigInteger
getSerialNumber()
已过时。从证书中获取serialNumber
值。abstract String
getSigAlgName()
已过时。获取证书签名算法的签名算法名称。abstract String
getSigAlgOID()
已过时。从证书中获取签名算法OID字符串。abstract byte[]
getSigAlgParams()
已过时。从此证书的签名算法中获取DER编码的签名算法参数。abstract Principal
getSubjectDN()
已过时。从证书中获取subject
(主题专有名称)值。abstract int
getVersion()
已过时。从证书中获取version
(版本号)值。-
声明方法的类 javax.security.cert.Certificate
equals, getEncoded, getPublicKey, hashCode, toString, verify, verify
-
-
-
-
方法详细信息
-
getInstance
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
Deprecated.实例化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
Deprecated.实例化X509Certificate对象,并使用指定的字节数组对其进行初始化。 实现(X509Certificate是一个抽象类)由指定为cert.provider.x509v1
安全属性值的类提供。注意:所有X509Certificate子类都必须提供以下形式的构造函数:
public <subClass>(InputStream inStream) ...
- 参数
-
certData
- 包含DER编码证书的字节数组。 - 结果
-
使用
certData
的数据初始化的X509Certificate对象。 - 异常
-
CertificateException
- 如果发生类初始化或证书解析错误。
-
checkValidity
public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
Deprecated.检查证书当前是否有效。 如果当前日期和时间在证书中给出的有效期内。有效期包括两个日期/时间值:证书有效的第一个和最后一个日期(和时间)。 它在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
Deprecated.检查指定日期是否在证书的有效期内。 换句话说,这确定证书在指定的日期/时间是否有效。- 参数
-
date
- 要检查的日期,以查看此证书在该日期/时间是否有效。 - 异常
-
CertificateExpiredException
- 如果证书已提供相对于所提供的date
。 -
CertificateNotYetValidException
- 如果证书对于提供的date
尚未生效。 - 另请参见:
-
checkValidity()
-
getVersion
public abstract int getVersion()
Deprecated.从证书中获取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()
Deprecated.从证书中获取serialNumber
值。 序列号是证书颁发机构为每个证书分配的整数。 对于给定CA颁发的每个证书,它必须是唯一的(即,颁发者名称和序列号标识唯一证书)。 ASN.1的定义是:serialNumber CertificateSerialNumber CertificateSerialNumber ::= INTEGER
- 结果
- 序列号。
-
getIssuerDN
public abstract Principal getIssuerDN()
Deprecated.从证书中获取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
。- 结果
- 名称为发行人专有名称的委托人。
-
getSubjectDN
public abstract Principal getSubjectDN()
Deprecated.- 结果
- 名称为主题名称的委托人。
- 另请参见:
-
getIssuerDN()
-
getNotBefore
public abstract Date getNotBefore()
Deprecated.从证书的有效期获取notBefore
日期。 相关的ASN.1定义是:validity Validity Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate } CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
- 结果
- 有效期的开始日期。
- 另请参见:
-
checkValidity()
-
getNotAfter
public abstract Date getNotAfter()
Deprecated.从证书的有效期获取notAfter
日期。 有关ASN.1定义,请参见getNotBefore
。- 结果
- 有效期的结束日期。
- 另请参见:
-
checkValidity()
-
getSigAlgName
public abstract String getSigAlgName()
Deprecated.获取证书签名算法的签名算法名称。 一个例子是字符串“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
算法名称由
algorithm
OID字符串确定。- 结果
- 签名算法名称。
-
getSigAlgOID
public abstract String getSigAlgOID()
Deprecated.从证书中获取签名算法OID字符串。 OID由一组由句点分隔的正整数表示。 例如,字符串“1.2.840.10040.4.3”根据PKIX部分I标识具有DSA签名算法的SHA-1。有关ASN.1定义,请参见
getSigAlgName
。- 结果
- 签名算法OID字符串。
-
getSigAlgParams
public abstract byte[] getSigAlgParams()
Deprecated.- 结果
- the DER-encoded signature algorithm parameters, or null if no parameters are present.
-
-