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

クラスX509Certificate

java.lang.Object
javax.security.cert.Certificate
javax.security.cert.X509Certificate

@Deprecated(since="9", forRemoval=true) public abstract class X509Certificate extends Certificate
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
代わりに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();
 
OR
 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
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    サブクラスが呼び出すためのコンストラクタ。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書が現在有効であるかどうかを判定します。
    abstract void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    指定された日付が、証明書の有効期間内であるかどうかを判定します。
    static final X509Certificate
    getInstance(byte[] certData)
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    X509Certificateオブジェクトをインスタンス化し、指定したバイト配列で初期化します。
    static final X509Certificate
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    X509Certificateオブジェクトをインスタンス化し、入力ストリームinStreamから読み取られたデータで初期化します。
    abstract Principal
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書からissuer (発行者識別名)値を取得します。
    abstract Date
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書の有効期間からnotAfterの日付を取得します。
    abstract Date
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書の有効期間からnotBeforeの日付を取得します。
    abstract BigInteger
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書からserialNumber値を取得します。
    abstract String
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書の署名アルゴリズム名を取得します。
    abstract String
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書から署名アルゴリズムのOID文字列を取得します。
    abstract byte[]
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    この証明書の署名アルゴリズムから、DERでエンコードされた署名アルゴリズム・パラメータを取得します。
    abstract Principal
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書からsubject (サブジェクト識別名)値を取得します。
    abstract int
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    証明書からversion (バージョン番号)値を取得します。

    クラス javax.security.cert.Certificateで宣言されたメソッド

    equals, getEncoded, getPublicKey, hashCode, toString, verify, verify

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • X509Certificate

      public X509Certificate()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      サブクラスが呼び出すためのコンストラクタ。
  • メソッドの詳細

    • getInstance

      public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      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
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      X509Certificateオブジェクトをインスタンス化し、指定したバイト配列で初期化します。 この実装(X509Certificateは抽象クラス)は、cert.provider.x509v1セキュリティ・プロパティの値として指定したクラスによって提供されます。

      ノート: すべてのX509Certificateサブクラスでは、次の形式のコンストラクタを提供する必要があります。

      
       public <subClass>(InputStream inStream) ...
       

      パラメータ:
      certData - DERでエンコードされた証明書を含むバイト配列。
      戻り値:
      certDataからのデータで初期化されたX509Certificateオブジェクト。
      例外:
      CertificateException - クラスの初期化時、または証明書の解析時にエラーが発生した場合。
    • checkValidity

      public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書が現在有効であるかどうかを判定します。 現在の日時が、証明書で指定された有効期間内であるかどうかを調べます。

      有効期間は、証明書が有効である最初の日時と最後の日時の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
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      指定された日付が、証明書の有効期間内であるかどうかを判定します。 つまり、指定された日時に証明書が有効であるかどうかを調べます。
      パラメータ:
      date - 指定された日時にこの証明書が有効であるかどうかを調べるDate。
      例外:
      CertificateExpiredException - 指定されたdateに証明書が期限切れになっている場合。
      CertificateNotYetValidException - 指定されたdateに証明書がまだ有効になっていない場合。
      関連項目:
    • getVersion

      public abstract int getVersion()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書から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()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書からserialNumber値を取得します。 シリアル番号は、証明書発行局によって各証明書に割り当てられる整数値です。 シリアル番号は、指定されたCAによって発行された各証明書に対して一意である必要があります。つまり、発行者名とシリアル番号によって一意の証明書が識別されます。 ASN.1定義は次のとおりです。
       serialNumber     CertificateSerialNumber
      
       CertificateSerialNumber  ::=  INTEGER
       
      戻り値:
      シリアル番号
    • getIssuerDN

      public abstract Principal getIssuerDN()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書から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()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書からsubject (サブジェクト識別名)値を取得します。 ASN.1定義は次のとおりです。
       subject    Name
       

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

      戻り値:
      名前がサブジェクト名であるPrincipal。
      関連項目:
    • getNotBefore

      public abstract Date getNotBefore()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書の有効期間からnotBeforeの日付を取得します。 該当するASN.1定義は次のとおりです。
       validity             Validity
      
       Validity ::= SEQUENCE {
           notBefore      CertificateValidityDate,
           notAfter       CertificateValidityDate }
      
       CertificateValidityDate ::= CHOICE {
           utcTime        UTCTime,
           generalTime    GeneralizedTime }
       
      戻り値:
      有効期間の開始日。
      関連項目:
    • getNotAfter

      public abstract Date getNotAfter()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書の有効期間からnotAfterの日付を取得します。 該当するASN.1定義については、getNotBeforeを参照してください。
      戻り値:
      有効期間の終了日。
      関連項目:
    • getSigAlgName

      public abstract String getSigAlgName()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書の署名アルゴリズム名を取得します。 たとえば、文字列「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()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      証明書から署名アルゴリズムのOID文字列を取得します。 OIDはピリオドで区切られた正の整数のセットで表されます。 たとえば、文字列「1.2.840.10040.4.3」では、DSA署名アルゴリズムを持つSHA-1が識別されます(PKIXパートIを参照)。

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

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

      public abstract byte[] getSigAlgParams()
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      この証明書の署名アルゴリズムから、DERでエンコードされた署名アルゴリズム・パラメータを取得します。 ほとんどの場合、署名アルゴリズム・パラメータはnullで、通常は証明書の公開キーとともに提供されます。

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

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