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

クラスX509CRL

java.lang.Object
java.security.cert.CRL
java.security.cert.X509CRL
すべての実装されたインタフェース:
X509Extension

public abstract class X509CRL extends CRL implements X509Extension

X.509証明書の取消しリスト(CRL)の抽象クラスです。 CRLは、タイムスタンプの付いたリストで、取り消された証明書を示しています。 これは証明書発行局(CA)によって署名され、共用リポジトリで自由に利用できます。

取り消された各証明書は、CRLでは証明書のシリアル番号によって識別されます。 証明書使用システムが証明書を使用するとき(リモート・ユーザーのデジタル署名の検証のためなど)、システムは証明書の署名と有効期間を確認するだけでなく、新しいCRLを取得し、証明書のシリアル番号がそのCRLにないことも確認します。 「新しい」の意味はローカル・ポリシーによって異なりますが、通常はもっとも新しく発行されたCRLを意味します。 CAは新しいCRLを定期的に(毎時、毎日、毎週など)発行します。 取消しがあるたびにエントリがCRLに追加され、証明書の有効期限が切れるとエントリが削除されます。

X.509 v2 CRL形式は、ASN.1で次のように記述されます。

 CertificateList  ::=  SEQUENCE  {
     tbsCertList          TBSCertList,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }
 

詳細は、RFC 5280「Internet X.509 Public Key Infrastructure Certificate and CRL Profile」を参照してください。

tbsCertListのASN.1定義は次のとおりです。

 TBSCertList  ::=  SEQUENCE  {
     version                 Version OPTIONAL,
                             -- if present, must be v2
     signature               AlgorithmIdentifier,
     issuer                  Name,
     thisUpdate              ChoiceOfTime,
     nextUpdate              ChoiceOfTime OPTIONAL,
     revokedCertificates     SEQUENCE OF SEQUENCE  {
         userCertificate         CertificateSerialNumber,
         revocationDate          ChoiceOfTime,
         crlEntryExtensions      Extensions OPTIONAL
                                 -- if present, must be v2
         }  OPTIONAL,
     crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
                                  -- if present, must be v2
     }
 

CRLのインスタンスは、証明書ファクトリを使って生成されます。 次の例はX.509 CRLのインスタンスを生成する方法を示しています。


 try (InputStream inStream = new FileInputStream("fileName-of-crl")) {
     CertificateFactory cf = CertificateFactory.getInstance("X.509");
     X509CRL crl = (X509CRL)cf.generateCRL(inStream);
 }
 

導入されたバージョン:
1.2
関連項目:
CRL, CertificateFactory, X509Extension
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    X.509 CRLのコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    equals​(Object other)
    指定されたオブジェクトとこのCRLが等しいかどうかを判定します。
    abstract byte[]
    このCRLのASN.1 DERで符号化された形式を返します。
    abstract Principal
    非推奨。
    代わりにgetIssuerX500Principal()を使用してください。
    CRLから発行者(発行者識別名)の値をX500Principalとして返します。
    abstract Date
    CRLからnextUpdateの日付を取得します。
    abstract X509CRLEntry
    指定された証明書のserialNumberを持つCRLエントリを取得します(ある場合)。
    指定された証明書に対するCRLエントリを取得します(存在する場合)。
    abstract Set<? extends X509CRLEntry>
    すべてのエントリを取得します。
    abstract String
    署名アルゴリズム名を取得します。
    abstract String
    CRLから署名アルゴリズムのOID文字列を取得します。
    abstract byte[]
    このCRLの署名アルゴリズムから、DERで符号化された署名アルゴリズム・パラメータを取得します。
    abstract byte[]
    signature値(生のシグネチャ・ビット)を取得します。
    abstract byte[]
    DERで符号化されたCRL情報tbsCertListをこのCRLから取得します。
    abstract Date
    CRLからthisUpdateの日付を取得します。
    abstract int
    CRLからversion (バージョン番号)値を取得します。
    int
    符号化された形式からこのCRLのハッシュ・コード値を返します。
    abstract void
    verify​(PublicKey key)
    指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。
    abstract void
    verify​(PublicKey key, String sigProvider)
    指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。
    void
    verify​(PublicKey key, Provider sigProvider)
    指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。

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

    getType, isRevoked, toString

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

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    インタフェース java.security.cert.X509Extensionで宣言されたメソッド

    getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
  • コンストラクタの詳細

    • X509CRL

      protected X509CRL()
      X.509 CRLのコンストラクタです。
  • メソッドの詳細

    • equals

      public boolean equals(Object other)
      指定されたオブジェクトとこのCRLが等しいかどうかを判定します。 otherオブジェクトがinstanceof X509CRLの場合、符号化された形式が取得され、このCRLの符号化された形式と比較されます。
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      other - このCRLと等しいかどうかが判定されるオブジェクト。
      戻り値:
      2つのCRLの符号化された形式が一致した場合はtrue、そうでない場合はfalse
      関連項目:
      Object.hashCode()HashMap
    • hashCode

      public int hashCode()
      符号化された形式からこのCRLのハッシュ・コード値を返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      ハッシュ・コード値。
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • getEncoded

      public abstract byte[] getEncoded() throws CRLException
      このCRLのASN.1 DERで符号化された形式を返します。
      戻り値:
      この証明書の符号化された形式
      例外:
      CRLException - 符号化エラーが発生した場合
    • verify

      指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。
      パラメータ:
      key - 検証の実行に使うPublicKey。
      例外:
      NoSuchAlgorithmException - サポートされていない署名アルゴリズムの場合。
      InvalidKeyException - 無効なキーの場合
      NoSuchProviderException - デフォルトのプロバイダがない場合。
      SignatureException - 署名エラーの場合。
      CRLException - 符号化エラーの場合
    • verify

      指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。 このメソッドは、指定されたプロバイダによって提供された署名検証エンジンを使用します。
      パラメータ:
      key - 検証の実行に使うPublicKey。
      sigProvider - 署名プロバイダの名前。
      例外:
      NoSuchAlgorithmException - サポートされていない署名アルゴリズムの場合。
      InvalidKeyException - 無効なキーの場合
      NoSuchProviderException - 無効なプロバイダの場合。
      SignatureException - 署名エラーの場合。
      CRLException - 符号化エラーの場合
    • verify

      指定された公開キーに対応する非公開キーを使って、このCRLが署名されたことを検証します。 このメソッドは、指定されたプロバイダによって提供された署名検証エンジンを使用します。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。 このメソッドは、Java Platform Standard Editionのバージョン1.8で追加されました。 既存のサービス・プロバイダとの下位互換性を維持するため、このメソッドはabstractではなく、デフォルトの実装を提供します。
      パラメータ:
      key - 検証の実行に使うPublicKey。
      sigProvider - 署名プロバイダ。
      例外:
      NoSuchAlgorithmException - サポートされていない署名アルゴリズムの場合。
      InvalidKeyException - 無効なキーの場合
      SignatureException - 署名エラーの場合。
      CRLException - 符号化エラーの場合
      導入されたバージョン:
      1.8
    • getVersion

      public abstract int getVersion()
      CRLからversion (バージョン番号)値を取得します。 ASN.1定義は次のとおりです。
       version    Version OPTIONAL,
                   -- if present, must be v2
      
       Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
                   -- v3 does not apply to CRLs but appears for consistency
                   -- with definition of Version for certs
       
      戻り値:
      バージョン番号(1または2)
    • getIssuerDN

      @Deprecated(since="16") public abstract Principal getIssuerDN()
      非推奨。
      代わりにgetIssuerX500Principal()を使用してください。 このメソッドは、移植可能なコードに依存しない実装固有のPrincipalオブジェクトとしてissuerを返します。
      CRLからissuer (発行者識別名)値を取得します。 発行者名は、CRLの署名と発行を行ったエンティティを識別します。

      発行者名フィールドには、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
    • getIssuerX500Principal

      public X500Principal getIssuerX500Principal()
      CRLから発行者(発行者識別名)の値をX500Principalとして返します。

      サブクラスでこのメソッドをオーバーライドすることをお薦めします。

      戻り値:
      発行者識別名を表すX500Principal
      導入されたバージョン:
      1.4
    • getThisUpdate

      public abstract Date getThisUpdate()
      CRLからthisUpdateの日付を取得します。 ASN.1定義は次のとおりです。
       thisUpdate   ChoiceOfTime
       ChoiceOfTime ::= CHOICE {
           utcTime        UTCTime,
           generalTime    GeneralizedTime }
       
      戻り値:
      CRLからのthisUpdateの日付
    • getNextUpdate

      public abstract Date getNextUpdate()
      CRLからnextUpdateの日付を取得します。
      戻り値:
      CRLからのnextUpdateの日付。日付がない場合はnull
    • getRevokedCertificate

      public abstract X509CRLEntry getRevokedCertificate(BigInteger serialNumber)
      指定された証明書のserialNumberを持つCRLエントリを取得します(ある場合)。
      パラメータ:
      serialNumber - CRLエントリを検索する証明書のシリアル番号
      戻り値:
      指定されたシリアル番号を持つエントリ。このCRLにそのエントリがない場合はnull
      関連項目:
      X509CRLEntry
    • getRevokedCertificate

      public X509CRLEntry getRevokedCertificate(X509Certificate certificate)
      指定された証明書に対するCRLエントリを取得します(存在する場合)。

      このメソッドを使用すると、間接CRL (CRL発行者以外の発行者によって発行されたエントリを含むCRL)内のCRLエントリを検索できます。 デフォルト実装は、CRL発行者によって発行された証明書エントリのみを返します。 間接CRLのサポートが必要なサブクラスは、このメソッドをオーバーライドする必要があります。

      パラメータ:
      certificate - CRLエントリの検索対象となる証明書
      戻り値:
      指定された証明書に対するエントリ。そのようなエントリがこのCRL内に存在しない場合はnull
      例外:
      NullPointerException - 証明書がnullの場合
      導入されたバージョン:
      1.5
    • getRevokedCertificates

      public abstract Set<? extends X509CRLEntry> getRevokedCertificates()
      すべてのエントリを取得します。 X509CRLEntryオブジェクトのSetが返されます。
      戻り値:
      すべてのエントリ。エントリがない場合はnull
      関連項目:
      X509CRLEntry
    • getTBSCertList

      public abstract byte[] getTBSCertList() throws CRLException
      DERで符号化されたCRL情報tbsCertListをこのCRLから取得します。 この情報は署名を個別に検証するために使用されます。
      戻り値:
      DERで符号化されたCRL情報
      例外:
      CRLException - 符号化エラーが発生した場合
    • getSignature

      public abstract byte[] getSignature()
      signature値(生のシグネチャ・ビット)を取得します。 ASN.1定義は次のとおりです。
       signature     BIT STRING
       
      戻り値:
      シグネチャ。
    • getSigAlgName

      public abstract String getSigAlgName()
      署名アルゴリズム名を取得します。 たとえば、文字列「SHA256withRSA」などです。 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()
      CRLから署名アルゴリズムのOID文字列を取得します。 OIDはピリオドで区切られた負にならない整数のセットで表されます。 たとえば、文字列「1.2.840.10040.4.3」では、RFC 3279「Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and CRL Profile」で定義されている、DSA署名アルゴリズムを持つSHA-1が識別されます。

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

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

      public abstract byte[] getSigAlgParams()
      このCRLの署名アルゴリズムから、DERで符号化された署名アルゴリズム・パラメータを取得します。 ほとんどの場合、署名アルゴリズム・パラメータはnullで、通常は公開キーとともに提供されます。 個々のパラメータ値へのアクセスが必要な場合は、AlgorithmParametersを使用し、getSigAlgNameによって返される名前を使ってインスタンスを生成します。

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

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