Module  java.base
软件包  javax.security.cert

Class 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
    另请参见:
    CertificateX509Extensionsecurity properties
    • 构造方法详细信息

      • X509Certificate

        public X509Certificate​()
        已过时。
    • 方法详细信息

      • 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 - 如果证书尚未生效。
      • 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通常之一PrintableStringTeletexStringUniversalString
        结果
        一位姓名为发行人名称的校长。
      • getSubjectDN

        public abstract Principal getSubjectDN​()
        已过时。
        从证书中获取subject (主题可分辨名称)值。 ASN.1的定义是:
          subject    Name 

        getIssuerDNName和其他相关定义。

        结果
        名称为主题名称的校长。
        另请参见:
        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; 参数通常随附证书的公钥一起提供。

        有关ASN.1定义,请参阅getSigAlgName

        结果
        DER编码的签名算法参数,如果没有参数,则为null。