模块  java.base
软件包  javax.security.cert

Class X509Certificate


  • @Deprecated(since="9")
    public abstract class X509Certificate
    extends Certificate
    Deprecated.
    Use the classes in java.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
    另请参见:
    CertificateX509Extensionsecurity properties
    • 构造方法详细信息

      • X509Certificate

        public X509Certificate()
        Deprecated.
    • 方法详细信息

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

        public abstract Principal getSubjectDN()
        Deprecated.
        从证书中获取subject (主题专有名称)值。 ASN.1的定义是:
          subject    Name 

        getIssuerDNName和其他相关定义。

        结果
        名称为主题名称的委托人。
        另请参见:
        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.
        从此证书的签名算法中获取DER编码的签名算法参数。 在大多数情况下,签名算法参数为空; 参数通常随证书的公钥一起提供。

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

        结果
        the DER-encoded signature algorithm parameters, or null if no parameters are present.