モジュール java.base
パッケージ javax.security.cert

クラスX509Certificate


  • @Deprecated(since="9")
    public abstract class X509Certificate
    extends Certificate
    非推奨。
    代わりにjava.security.certのクラスを使用してください。
    X.509 v1証明書のabstractクラスです。 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  }
     

    これらの証明書は、インターネットのセキュリティ・システムで認証などの機能をサポートするために広く使われています。 代表的なアプリケーションには、Privacy Enhanced Mail (PEM)、Transport Layer Security (SSL)、信頼できるソフトウェア配布のためのコード署名、およびSecure Electronic Transactions (SET)などがあります。

    これらの証明書は、証明書発行局 (CA)によって管理および保証されています。 CAは、データをX.509標準形式にしてから、そのデータにデジタル署名することにより証明書を作成するサービスです。 CAは信頼できる第三者として機能し、直接には面識のないプリンシパル同士を引き合わせます。 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 Secure Sockets Extension (JSSE)との互換性のために存在します。 新規アプリケーションの場合、このクラスではなく、java.security.certにある標準Java SE証明書クラスを使用するようにしてください。

    導入されたバージョン:
    1.4
    関連項目:
    Certificate, X509Extension, セキュリティ・プロパティ
    • コンストラクタの詳細

      • X509Certificate

        public X509Certificate()
        非推奨。
    • メソッドの詳細

      • getInstance

        public static final X509Certificate getInstance​(InputStream inStream)
                                                 throws CertificateException
        非推奨。
        X509Certificateオブジェクトをインスタンス化し、入力ストリームinStreamから読み取られたデータで初期化します。 この実装(X509Certificateは抽象クラス)は、cert.provider.x509v1セキュリティ・プロパティの値として指定したクラスによって提供されます。

        注: 1つの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
        非推奨。
        証明書が現在有効であるかどうかを判定します。 現在の日時が、証明書で指定された有効期間内であるかどうかを調べます。

        有効期間は、証明書が有効である最初の日時と最後の日時の2つの日時値から成ります。 これは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)  }
         
        戻り値:
        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のいずれかです。

        戻り値:
        名前が発行者識別名であるPrincipal。
      • getSubjectDN

        public abstract Principal getSubjectDN()
        非推奨。
        証明書からsubject (サブジェクト識別名)値を取得します。 ASN.1定義は次のとおりです。
         subject    Name
         

        Nameおよびその他の関連する定義については、getIssuerDNを参照してください。

        戻り値:
        名前がサブジェクト名であるPrincipal。
        関連項目:
        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はピリオドで区切られた正の整数のセットで表されます。 たとえば、文字列「1.2.840.10040.4.3」では、DSA署名アルゴリズムを持つSHA-1が識別されます(PKIXパートIを参照)。

        該当するASN.1定義については、getSigAlgNameを参照してください。

        戻り値:
        署名アルゴリズムのOID文字列。
      • getSigAlgParams

        public abstract byte[] getSigAlgParams()
        非推奨。
        この証明書の署名アルゴリズムから、DERでエンコードされた署名アルゴリズム・パラメータを取得します。 ほとんどの場合、署名アルゴリズム・パラメータはnullで、通常は証明書の公開鍵とともに提供されます。

        該当するASN.1定義については、getSigAlgNameを参照してください。

        戻り値:
        DERでエンコードされた署名アルゴリズム・パラメータ。パラメータが存在しない場合はnull。