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

クラスCertificateFactory


  • public class CertificateFactory
    extends Object
    このクラスは、証明書ファクトリの機能を定義します。証明書ファクトリは、証明書オブジェクト、証明書パス(CertPath)および証明書の取消しリスト(CRL)オブジェクトを符号から生成するために使用します。

    複数の証明書からなる符号化では、互いに関連性がないと思われる証明書のコレクションを解析する場合に、generateCertificatesを使用します。 そうでない場合は、CertPath (証明書チェーン)を生成してCertPathValidatorで検証するときにgenerateCertPathを使用します。

    X.509の証明書ファクトリは、java.security.cert.X509Certificateのインスタンスである証明書、およびjava.security.cert.X509CRLのインスタンスであるCRLを返します。

    次の例は、Base64で符号化された証明書を持つファイルを読み出します。これらの証明書は、先頭が -----BEGIN CERTIFICATE----- によって区切られ、終端が -----END CERTIFICATE----- によって区切られます。 generateCertificateの各呼出しが1つの証明書だけを使用し、入力ストリームの読出し位置がファイル内の次の証明書に置かれるように、FileInputStream (markおよびresetをサポートしていない)をBufferedInputStream (これらのメソッドをサポート)に変換します。

    
     FileInputStream fis = new FileInputStream(filename);
     BufferedInputStream bis = new BufferedInputStream(fis);
    
     CertificateFactory cf = CertificateFactory.getInstance("X.509");
    
     while (bis.available() > 0) {
        Certificate cert = cf.generateCertificate(bis);
        System.out.println(cert.toString());
     }
     

    次の例は、ファイル内に保存されたPKCS#7形式の認証応答を解析し、そこから証明書をすべて抽出します。

     FileInputStream fis = new FileInputStream(filename);
     CertificateFactory cf = CertificateFactory.getInstance("X.509");
     Collection c = cf.generateCertificates(fis);
     Iterator i = c.iterator();
     while (i.hasNext()) {
        Certificate cert = (Certificate)i.next();
        System.out.println(cert);
     }
     

    Javaプラットフォームの実装は、すべて次の標準のCertificateFactoryタイプをサポートする必要があります。

    • X.509
    また、次の標準のCertPath符号化にも対応する必要があります。
    • PKCS7
    • PkiPath
    型とエンコーディングは、Javaセキュリティ標準アルゴリズム名仕様の「CertificateFactoryセクション」「「CertPathエンコーディング」セクション」に記述されています。 サポートされているその他のタイプや符号化については、実装のリリース・ノートを参照してください。

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

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected CertificateFactory​(CertificateFactorySpi certFacSpi, Provider provider, String type)
      指定されたタイプのCertificateFactoryオブジェクトを作成し、指定されたプロバイダの実装(SPIオブジェクト)をそこにカプセル化します。
    • コンストラクタの詳細

      • CertificateFactory

        protected CertificateFactory​(CertificateFactorySpi certFacSpi,
                                     Provider provider,
                                     String type)
        指定されたタイプのCertificateFactoryオブジェクトを作成し、指定されたプロバイダの実装(SPIオブジェクト)をそこにカプセル化します。
        パラメータ:
        certFacSpi - プロバイダの実装。
        provider - プロバイダ。
        type - 証明書タイプ。
    • メソッドの詳細

      • getInstance

        public static final CertificateFactory getInstance​(String type)
                                                    throws CertificateException
        指定されたタイプの証明書を実装する証明書ファクトリ・オブジェクトを返します。

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

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

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

        public static final CertificateFactory getInstance​(String type,
                                                           String provider)
                                                    throws CertificateException,
                                                           NoSuchProviderException
        指定されたタイプの証明書ファクトリ・オブジェクトを返します。

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

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

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

        public static final CertificateFactory getInstance​(String type,
                                                           Provider provider)
                                                    throws CertificateException
        指定されたタイプの証明書ファクトリ・オブジェクトを返します。

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

        パラメータ:
        type - 証明書タイプ。 標準証明書型については、「Javaセキュリティ標準アルゴリズム名指定」のCertificateFactoryセクションを参照してください。
        provider - プロバイダ。
        戻り値:
        指定されたタイプの証明書ファクトリ・オブジェクト
        例外:
        CertificateException - 指定されたアルゴリズムのCertificateFactorySpi実装が、指定されたProviderオブジェクトから使用できない場合
        IllegalArgumentException - providernullの場合
        NullPointerException - typenullである場合
        導入されたバージョン:
        1.4
        関連項目:
        Provider
      • getProvider

        public final Provider getProvider()
        この証明書ファクトリのプロバイダを返します。
        戻り値:
        この証明書ファクトリのプロバイダ。
      • getType

        public final String getType()
        この証明書ファクトリに関連した証明書タイプの名前を返します。
        戻り値:
        この証明書ファクトリに関連付けられた証明書タイプの名前。
      • generateCertificate

        public final Certificate generateCertificate​(InputStream inStream)
                                              throws CertificateException
        証明書オブジェクトを生成し、入力ストリームinStreamから読み込まれたデータで初期化します。

        この証明書ファクトリによってサポートされている特殊形式の証明書を利用するために、返された証明書オブジェクトを対応する証明書クラスに型キャストできます。 たとえば、この証明書ファクトリがX.509証明書を実装する場合、返された証明書オブジェクトをX509Certificateクラスに型キャストできます。

        X.509証明書の証明書ファクトリの場合は、inStreamで提供される証明書はDERで符号化される必要があり、バイナリまたはプリント可能(Base64)な符号で提供されることもあります。 証明書がBase64の符号で提供された場合、先頭は -----BEGIN CERTIFICATE----- によって区切られ、終端は -----END CERTIFICATE----- によって区切られる必要があります。

        指定された入力ストリームがmarkおよびresetをサポートしていない場合、このメソッドは入力ストリーム全体を使用します。 そうでない場合、このメソッドが呼び出されるたびに証明書を1つ消費し、入力ストリームの読込み位置は、固有のend-of-certificateマーカーのあとで次に使用可能なバイトに設定されます。 固有のend-of-certificateマーカー(EOF以外)が入力ストリームのデータに含まれず、証明書が構文解析されたあとでデータが続く場合は、CertificateExceptionがスローされます。

        パラメータ:
        inStream - 証明書データを持つ入力ストリーム。
        戻り値:
        入力ストリームのデータを使って初期化された証明書オブジェクト。
        例外:
        CertificateException - 構文解析エラーの場合。
      • getCertPathEncodings

        public final Iterator<String> getCertPathEncodings()
        この証明書ファクトリでサポートするCertPathのエンコーディングの繰返しを返します。繰返しの最初はデフォルトのエンコーディングになります。 標準のエンコーディング名とそのフォーマットについては、「Javaセキュリティ標準アルゴリズム名指定」の「CertPathエンコーディング」セクションを参照してください。

        返されたIteratorremoveメソッドで変更しようとすると、UnsupportedOperationExceptionがスローされます。

        戻り値:
        サポートされるCertPath符号化の名前(String)を反復するIterator
        導入されたバージョン:
        1.4
      • generateCertPath

        public final CertPath generateCertPath​(InputStream inStream)
                                        throws CertificateException
        CertPathオブジェクトを生成し、InputStreamであるinStreamから読み込まれたデータで初期化します。 データはデフォルトの符号化がされていると仮定されます。 デフォルトの符号化の名前は、getCertPathEncodingsメソッドで返されるIteratorの最初の要素になります。
        パラメータ:
        inStream - データが含まれるInputStream
        戻り値:
        InputStreamからのデータで初期化されたCertPath
        例外:
        CertificateException - 復号化中に例外が発生した場合
        導入されたバージョン:
        1.4
      • generateCertPath

        public final CertPath generateCertPath​(InputStream inStream,
                                               String encoding)
                                        throws CertificateException
        CertPathオブジェクトを生成し、InputStreamであるinStreamから読み込まれたデータで初期化します。 データは指定した符号化がされていると仮定されます。 標準のエンコーディング名とそのフォーマットについては、「Javaセキュリティ標準アルゴリズム名指定」の「CertPathエンコーディング」セクションを参照してください。
        パラメータ:
        inStream - データが含まれるInputStream
        encoding - データで使用される符号化
        戻り値:
        InputStreamからのデータで初期化されたCertPath
        例外:
        CertificateException - 復号化中に例外が発生した場合、または要求された符号化がサポートされていない場合
        導入されたバージョン:
        1.4
      • generateCertPath

        public final CertPath generateCertPath​(List<? extends Certificate> certificates)
                                        throws CertificateException
        CertPathオブジェクトを生成し、CertificateListで初期化します。

        提供される証明書は、CertificateFactoryでサポートされているタイプである必要があります。 これらは、指定されたListオブジェクトからコピーされます。

        パラメータ:
        certificates - CertificateList
        戻り値:
        提供された証明書のリストで初期化されたCertPath
        例外:
        CertificateException - 例外が発生する場合
        導入されたバージョン:
        1.4
      • generateCertificates

        public final Collection<? extends Certificate> generateCertificates​(InputStream inStream)
                                                                     throws CertificateException
        指定された入力ストリームinStreamから読み込まれた証明書のコレクション・ビュー(空の場合もある)を返します。

        この証明書ファクトリによってサポートされている特殊な形式の証明書を利用するために、返されたコレクション・ビューの各要素を対応する証明書クラスに型キャストできます。 たとえば、この証明書ファクトリがX.509証明書を実装する場合、返されたコレクション内の要素をX509Certificateクラスに型キャストできます。

        X.509証明書で使う証明書ファクトリの場合、inStreamには、generateCertificateで説明されている形式の、DERで符号化された一連の証明書が格納されます。 また、inStreamにはPKCS#7証明書チェーンが格納されます。 これはPKCS#7 SignedDataオブジェクトであり、上位フィールドはcertificatesだけです。 特に、署名および内容は無視されます。 この形式の場合、複数の証明書を1回でダウンロードできます。 証明書がない場合は、空のコレクションが返されます。

        指定された入力ストリームがmarkおよびresetをサポートしていない場合、このメソッドは入力ストリーム全体を使用します。

        パラメータ:
        inStream - 証明書を持つ入力ストリーム。
        戻り値:
        入力ストリームからのデータを使って初期化されたjava.security.cert.Certificateオブジェクトのコレクション・ビュー。空の場合もある。
        例外:
        CertificateException - 構文解析エラーの場合。
      • generateCRL

        public final CRL generateCRL​(InputStream inStream)
                              throws CRLException
        証明書の取消しリスト(CRL)オブジェクトを生成し、入力ストリームinStreamから読み込まれたデータで初期化します。

        この証明書ファクトリによってサポートされている特殊な形式のCRLを利用するために、返されたCRLオブジェクトを対応するCRLクラスに型キャストできます。 たとえば、この証明書ファクトリがX.509 CRLを実装する場合、返されたCRLオブジェクトをX509CRLクラスに型キャストできます。

        指定された入力ストリームがmarkおよびresetをサポートしていない場合、このメソッドは入力ストリーム全体を使用します。 そうでない場合、このメソッドが呼び出されるたびにCRLを1つ消費し、入力ストリームの読込み位置は、固有のend-of-CRLマーカーのあとで次に使用可能なバイトに設定されます。 固有のend-of-CRLマーカー(EOF以外)が入力ストリームのデータに含まれず、CRLが構文解析されたあとでデータが続く場合は、CRLExceptionがスローされます。

        パラメータ:
        inStream - CRLデータを持つ入力ストリーム。
        戻り値:
        入力ストリームのデータを使って初期化されたCRLオブジェクト。
        例外:
        CRLException - 構文解析エラーの場合。
      • generateCRLs

        public final Collection<? extends CRL> generateCRLs​(InputStream inStream)
                                                     throws CRLException
        指定された入力ストリームinStreamから読み込まれたCRLのコレクション・ビュー(空の場合もある)を返します。

        この証明書ファクトリによってサポートされている特殊な形式のCRLを利用するために、返されたコレクション・ビューの各要素を対応するCRLクラスに型キャストできます。 たとえば、この証明書ファクトリがX.509 CRLを実装する場合、返されたコレクション内の要素をX509CRLクラスに型キャストできます。

        X.509 CRLの証明書ファクトリの場合は、inStreamには、DERで符号化された一連のCRLが格納されます。 また、inStreamにはPKCS#7 CRLセットが格納されます。 これはPKCS#7 SignedDataオブジェクトであり、上位フィールドはcrlsだけです。 特に、署名および内容は無視されます。 この形式の場合、複数のCRLを1回でダウンロードできます。 CRLがない場合は、空のコレクションが返されます。

        指定された入力ストリームがmarkおよびresetをサポートしていない場合、このメソッドは入力ストリーム全体を使用します。

        パラメータ:
        inStream - CRLを持つ入力ストリーム。
        戻り値:
        入力ストリームからのデータを使って初期化されたjava.security.cert.CRLオブジェクトのコレクション・ビュー。空の場合もある。
        例外:
        CRLException - 構文解析エラーの場合。