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

クラスCertPathBuilder


  • public class CertPathBuilder
    extends Object
    証明書パス(証明書チェーンとも呼ばれる)を構築するためのクラスです。

    このクラスは、プロバイダ・ベースのアーキテクチャを使用します。 CertPathBuilderを作成するには、static getInstanceメソッドのうちの1つを呼び出して、作成するCertPathBuilderのアルゴリズム名とプロバイダ名(オプション)を渡します。

    CertPathBuilderオブジェクトが作成されると、buildメソッドを呼び出してアルゴリズム固有のパラメータ・セットを渡すことで、証明書パスが構築されます。 証明書パスの構築に成功すると、CertPathBuilderResultインタフェースを実装するオブジェクトにその結果(構築したCertPathを含む)が返されます。

    アプリケーションはgetRevocationChecker()メソッドを使用して、CertPathBuilderが証明書の失効ステータスをチェックするときに使用する追加のアルゴリズム固有のパラメータおよびオプションを指定できます。 次の例は、PKIXアルゴリズムでの使用方法を示しています。

     CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
     PKIXRevocationChecker rc = (PKIXRevocationChecker)cpb.getRevocationChecker();
     rc.setOptions(EnumSet.of(Option.PREFER_CRLS));
     params.addCertPathChecker(rc);
     CertPathBuilderResult cpbr = cpb.build(params);
     

    Javaプラットフォームの実装は、すべて次の標準のCertPathBuilderアルゴリズムをサポートする必要があります。

    • PKIX
    このアルゴリズムはJavaセキュリティ標準アルゴリズム名仕様の「CertPathBuilderセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    並行アクセス

    このクラスのstaticメソッドは、スレッドセーフであることが保証されています。 このクラスで定義されているstaticメソッドは、悪影響を与えることなく、複数スレッドが並行して呼び出すことができます。

    しかしこのことは、このクラスで定義されている非staticメソッドには当てはまりません。 特定のプロバイダで特に説明がないかぎり、単一のCertPathBuilderインスタンスに並行してアクセスする必要のある複数スレッドは、スレッド間で同期を取り、必要に応じてロックしなければいけません。 異なるCertPathBuilderインスタンスを操作する複数スレッドは、同期化される必要はありません。

    導入されたバージョン:
    1.4
    関連項目:
    CertPath
    • コンストラクタの詳細

      • CertPathBuilder

        protected CertPathBuilder​(CertPathBuilderSpi builderSpi,
                                  Provider provider,
                                  String algorithm)
        指定されたアルゴリズムのCertPathBuilderオブジェクトを作成し、指定されたプロバイダの実装(SPIオブジェクト)をそこにカプセル化します。
        パラメータ:
        builderSpi - プロバイダの実装
        provider - プロバイダ
        algorithm - アルゴリズム名
    • メソッドの詳細

      • getInstance

        public static CertPathBuilder getInstance​(String algorithm)
                                           throws NoSuchAlgorithmException
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクトを返します。

        このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderのCertPathBuilderSpi実装をカプセル化する新しいCertPathBuilderオブジェクトが返されます。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        実装上の注意:
        JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
        パラメータ:
        algorithm - 要求するCertPathBuilderアルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のCertPathBuilderセクションを参照してください。
        戻り値:
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクト
        例外:
        NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのCertPathBuilderSpi実装をサポートしていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static CertPathBuilder getInstance​(String algorithm,
                                                  String provider)
                                           throws NoSuchAlgorithmException,
                                                  NoSuchProviderException
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクトを返します。

        指定されたプロバイダのCertPathBuilderSpi実装をカプセル化する新しいCertPathBuilderオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        パラメータ:
        algorithm - 要求するCertPathBuilderアルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のCertPathBuilderセクションを参照してください。
        provider - プロバイダ名。
        戻り値:
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクト
        例外:
        IllegalArgumentException - providernullまたは空の場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのCertPathBuilderSpi実装が、指定されたプロバイダから利用可能でない場合
        NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static CertPathBuilder getInstance​(String algorithm,
                                                  Provider provider)
                                           throws NoSuchAlgorithmException
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクトを返します。

        指定されたProviderオブジェクトのCertPathBuilderSpi実装をカプセル化する新しいCertPathBuilderオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

        パラメータ:
        algorithm - 要求するCertPathBuilderアルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のCertPathBuilderセクションを参照してください。
        provider - プロバイダ
        戻り値:
        指定されたアルゴリズムを実装するCertPathBuilderオブジェクト
        例外:
        IllegalArgumentException - providernullの場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのCertPathBuilderSpi実装が、指定されたProviderオブジェクトから使用できない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getProvider

        public final Provider getProvider()
        このCertPathBuilderのプロバイダを返します。
        戻り値:
        このCertPathBuilderのプロバイダ
      • getAlgorithm

        public final String getAlgorithm()
        このCertPathBuilderのアルゴリズム名を返します。
        戻り値:
        このCertPathBuilderのアルゴリズム名
      • getDefaultType

        public static final String getDefaultType()
        certpathbuilder.typeセキュリティ・プロパティに指定されているデフォルトのCertPathBuilderタイプを返します。該当するプロパティが存在しない場合は、文字列「PKIX」を返します。

        デフォルトのCertPathBuilderタイプを使用するのは、アプリケーションでgetInstanceメソッドを呼び出すときにハードコードされたタイプを使用しない場合、およびユーザーが独自のタイプを指定しないときにデフォルトのタイプを提供する場合です。

        デフォルトのCertPathBuilderタイプは、certpathbuilder.typeセキュリティ・プロパティの値を目的のタイプに設定することで変更できます。

        戻り値:
        certpathbuilder.typeセキュリティ・プロパティに指定されているデフォルトのCertPathBuilderタイプ、該当するプロパティが存在しない場合は文字列「PKIX」。
        関連項目:
        セキュリティ・プロパティ
      • getRevocationChecker

        public final CertPathChecker getRevocationChecker()
        カプセル化されたCertPathBuilderSpi実装が証明書の失効ステータスをチェックするために使用するCertPathCheckerを返します。 PKIX実装は、PKIXRevocationChecker型のオブジェクトを返します。 このメソッドを呼び出すたびに、CertPathCheckerの新しいインスタンスが返されます。

        このメソッドの主な目的は、呼出し側が失効チェックに固有の追加の入力パラメータおよびオプションを指定できるようにすることです。 具体例については、クラスの説明を参照してください。

        戻り値:
        CertPathChecker
        例外:
        UnsupportedOperationException - サービス・プロバイダがこのメソッドをサポートしない場合
        導入されたバージョン:
        1.8