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

クラスCertPathValidator


  • public class CertPathValidator
    extends Object
    証明書パス(証明書チェーンとも呼ばれる)の妥当性を検査するためのクラスです。

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

    CertPathValidatorオブジェクトが作成されると、validateメソッドを呼び出して、検証対象のCertPathとアルゴリズム固有のパラメータ・セットを渡すことで、証明書パスが検査されます。 証明書パスの検査に成功すると、CertPathValidatorResultインタフェースを実装するオブジェクトにその結果が返されます。

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

     CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
     PKIXRevocationChecker rc = (PKIXRevocationChecker)cpv.getRevocationChecker();
     rc.setOptions(EnumSet.of(Option.SOFT_FAIL));
     params.addCertPathChecker(rc);
     CertPathValidatorResult cpvr = cpv.validate(path, params);
     

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

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

    並行アクセス

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

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

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

      • CertPathValidator

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

      • getInstance

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

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

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

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

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

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

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

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

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

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

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

        public final Provider getProvider()
        このCertPathValidatorProviderを返します。
        戻り値:
        このCertPathValidatorProvider
      • getAlgorithm

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

        public final CertPathValidatorResult validate​(CertPath certPath,
                                                      CertPathParameters params)
                                               throws CertPathValidatorException,
                                                      InvalidAlgorithmParameterException
        指定したアルゴリズムのパラメータ・セットを使用して、指定した証明書パスを検査します。

        指定したCertPathは、検査アルゴリズムでサポートされているタイプである必要があります。そうでない場合は、InvalidAlgorithmParameterExceptionがスローされます。 たとえば、PKIXアルゴリズムを実装するCertPathValidatorでは、タイプX.509のCertPathオブジェクトを検査します。

        パラメータ:
        certPath - 検査するCertPath
        params - アルゴリズム・パラメータ
        戻り値:
        検査アルゴリズムの結果
        例外:
        CertPathValidatorException - CertPathが有効でない場合
        InvalidAlgorithmParameterException - 指定されたパラメータまたは指定されたCertPathのタイプがこのCertPathValidatorに対して不適切である場合
      • getDefaultType

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

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

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

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

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

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

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