- java.lang.Object
-
- javax.security.cert.Certificate
-
- javax.security.cert.X509Certificate
-
已过时。使用java.security.cert
的类。
@Deprecated(since="9") public abstract class X509Certificate extends Certificate
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(如“root”)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
属性的值必须更改为实例化另一个实现。 如果未设置此安全属性,将使用默认实现。 目前,由于对安全属性访问的可能的安全限制,此值将在类初始化时被查找并缓存,如果安全属性不可访问,将返回默认实现。注意:为了与早期版本的Java安全套接字扩展(JSSE)兼容,存在包
javax.security.cert
的类。 应该使用新应用程序使用位于java.security.cert
的标准Java SE证书类。- 从以下版本开始:
- 1.4
- 另请参见:
-
Certificate
,X509Extension
,security properties
-
-
构造方法摘要
构造方法 Constructor 描述 X509Certificate()
已过时。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 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
(版本号)值。-
Methods inherited from class javax.security.cert.Certificate
equals, getEncoded, getPublicKey, hashCode, toString, verify, verify
-
-
-
-
方法详细信息
-
getInstance
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
已过时。实例化一个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
已过时。实例化一个X509Certificate对象,并用指定的字节数组初始化它。 实现(X509Certificate是一个抽象类)由指定为cert.provider.x509v1
安全属性值的类提供。注意:所有X509Certificate子类必须提供以下形式的构造函数:
public <subClass>(InputStream inStream) ...
- 参数
-
certData
- 包含DER编码证书的字节数组。 - 结果
-
用
certData
初始化的X509Certificate对象。 - 异常
-
CertificateException
- 如果发生类初始化或证书解析错误。
-
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
- 在该日期/时间内检查此证书是否有效的日期。 - 异常
-
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) }
- 结果
- 来自ASN.1编码的版本号,即0,1或2。
-
getSerialNumber
public abstract BigInteger getSerialNumber()
已过时。从证书获取serialNumber
值。 序列号是由证书颁发机构分配给每个证书的整数。 对于由给定CA颁发的每个证书(即,发行者名称和序列号标识唯一证书),它必须是唯一的。 ASN.1的定义是:serialNumber CertificateSerialNumber CertificateSerialNumber ::= INTEGER
- 结果
- 序列号。
-
getIssuerDN
public abstract Principal getIssuerDN()
已过时。获取证书中的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()
已过时。- 结果
- 名称为主题名称的校长。
- 另请参见:
-
getIssuerDN()
-
getNotBefore
public abstract Date getNotBefore()
已过时。从证书的有效期获取notBefore
日期。 相关的ASN.1定义是:validity Validity Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate } CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
- 结果
- 有效期的开始日期。
- 另请参见:
-
checkValidity()
-
getNotAfter
public abstract Date getNotAfter()
已过时。从证书的有效期获取notAfter
日期。 有关ASN.1定义,请参见getNotBefore
。- 结果
- 有效期结束日期。
- 另请参见:
-
checkValidity()
-
getSigAlgName
public abstract String getSigAlgName()
已过时。获取证书签名算法的签名算法名称。 一个例子是字符串“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()
已过时。从证书获取签名算法OID字符串。 OID由一组由周期分隔的正整数表示。 例如,根据PKIX第一部分,字符串“1.2.840.10040.4.3”标识具有DSA签名算法的SHA-1。有关ASN.1定义,请参见
getSigAlgName
。- 结果
- 签名算法OID字符串。
-
getSigAlgParams
public abstract byte[] getSigAlgParams()
已过时。- 结果
- DER编码的签名算法参数,如果没有参数,则为null。
-
-