Foundation 1.1.2

java.security
クラス KeyStore

java.lang.Object
  上位を拡張 java.security.KeyStore

public class KeyStore
extends Object

このクラスは、メモリー内部での鍵と証明書のコレクションを表します。次の 2 つの型のエントリを管理します。

キーストア内の各エントリは、「別名」文字列によって識別されます。非公開鍵とそれに関連付けられた証明書チェーンの場合は、これらの文字列によってエンティティーが自身を認証する際に使用するさまざまな方法が区別されます。たとえば、エンティティーは自身を認証する際に、異なる証明書発行局を使ったり、異なる公開鍵アルゴリズムを使ったりできます。

キーストアが持続性があるかどうか、および持続性がある場合に使われる機構は、ここでは指定されません。これにより、重要な (秘密または非公開) 鍵を保護するためのさまざまな技術を使うことができます。スマートカードまたはその他の統合暗号化エンジン (SafeKeyper) を使うことも 1 つの方法です。また、ファイルなどのより単純な機構をさまざまな形式で使うこともできます。

KeyStore オブジェクトを要求するには、2 つの方法があります。1 つはキーストア型のみを指定する方法で、もう 1 つはキーストア型とパッケージプロバイダの両方を指定する方法です。

特定のキーストアにアクセスできるようにするには、そのキーストアをロードする必要があります。空のキーストアを作成するには、load メソッドの InputStream 引数として null を渡します。

導入されたバージョン:
1.2
関連項目:
PrivateKey, Certificate

コンストラクタの概要
protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
          指定された型の KeyStore オブジェクトを作成し、そのオブジェクトで、指定されたプロバイダの実装である SPI オブジェクトをカプセル化します。
 
メソッドの概要
 Enumeration aliases()
          このキーストアのすべての別名を一覧表示します。
 boolean containsAlias(String alias)
          このキーストアに、指定された別名が存在するかどうかを判定します。
 void deleteEntry(String alias)
          このキーストアから、指定された別名によって識別されるエントリを削除します。
 Certificate getCertificate(String alias)
          指定された別名に関連付けられた証明書を返します。
 String getCertificateAlias(Certificate cert)
          指定された証明書と一致する証明書がある最初のキーストアエントリの別名を返します。
 Certificate[] getCertificateChain(String alias)
          指定された別名に関連付けられた証明書チェーンを返します。
 Date getCreationDate(String alias)
          指定された別名によって識別されるエントリの作成日を返します。
static String getDefaultType()
          Java セキュリティープロパティーファイルに指定されているデフォルトのキーストア型を返します。
static KeyStore getInstance(String type)
          指定された型のキーストアオブジェクトを生成します。
static KeyStore getInstance(String type, Provider provider)
          指定されたプロバイダから、指定されたキーストア型のキーストアオブジェクトを生成します。
static KeyStore getInstance(String type, String provider)
          指定されたプロバイダから、指定されたキーストア型のキーストアオブジェクトを生成します。
 Key getKey(String alias, char[] password)
          指定されたパスワードを使って、指定された別名に関連した鍵を復元し、その鍵を返します。
 Provider getProvider()
          このキーストアのプロバイダを返します。
 String getType()
          このキーストアの型を返します。
 boolean isCertificateEntry(String alias)
          指定された別名で識別されるエントリが「信頼できる証明書エントリ」である場合は true、そうでない場合は false を返します。
 boolean isKeyEntry(String alias)
          指定された別名で識別されるエントリが「鍵エントリ」である場合は true、そうでない場合は false を返します。
 void load(InputStream stream, char[] password)
          指定された入力ストリームからこのキーストアをロードします。
 void setCertificateEntry(String alias, Certificate cert)
          指定された別名に、指定された証明書を割り当てます。
 void setKeyEntry(String alias, byte[] key, Certificate[] chain)
          指定された別名に、すでに保護されている指定の鍵を割り当てます。
 void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
          指定された別名に指定された鍵を割り当て、指定されたパスワードでその鍵を保護します。
 int size()
          このキーストアのエントリ数を取得します。
 void store(OutputStream stream, char[] password)
          指定された出力ストリームにこのキーストアを格納し、指定されたパスワードでその整合性を保護します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

KeyStore

protected KeyStore(KeyStoreSpi keyStoreSpi,
                   Provider provider,
                   String type)
指定された型の KeyStore オブジェクトを作成し、そのオブジェクトで、指定されたプロバイダの実装である SPI オブジェクトをカプセル化します。

パラメータ:
keyStoreSpi - プロバイダの実装
provider - プロバイダ
type - キーストア型
メソッドの詳細

getInstance

public static KeyStore getInstance(String type)
                            throws KeyStoreException
指定された型のキーストアオブジェクトを生成します。

指定された型のキーストアの実装をデフォルトのプロバイダパッケージが提供する場合は、その実装を含む KeyStore のインスタンスが返されます。要求されたキーストア型がデフォルトのパッケージで使用できない場合は、ほかのパッケージが検索されます。

パラメータ:
type - キーストア型。 標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
戻り値:
指定された型のキーストアオブジェクト
例外:
KeyStoreException - 要求されたキーストア型がデフォルトのプロバイダパッケージでも、検索したほかのプロバイダパッケージでも使用できない場合

getInstance

public static KeyStore getInstance(String type,
                                   String provider)
                            throws KeyStoreException,
                                   NoSuchProviderException
指定されたプロバイダから、指定されたキーストア型のキーストアオブジェクトを生成します。

パラメータ:
type - キーストア型。 標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
指定されたプロバイダが提供する、指定された型のキーストアオブジェクト
例外:
KeyStoreException - 要求されたキーストア型をそのプロバイダから取得できない場合
NoSuchProviderException - プロバイダが設定されていない場合
IllegalArgumentException - プロバイダ名が null または空の場合
関連項目:
Provider

getInstance

public static KeyStore getInstance(String type,
                                   Provider provider)
                            throws KeyStoreException
指定されたプロバイダから、指定されたキーストア型のキーストアオブジェクトを生成します。注:provider を登録する必要はありません。

パラメータ:
type - キーストア型。 標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
指定されたプロバイダが提供する、指定された型のキーストアオブジェクト
例外:
KeyStoreException - 要求されたキーストア型をそのプロバイダから取得できない場合
IllegalArgumentException - provider が null の場合
導入されたバージョン:
1.4
関連項目:
Provider

getProvider

public final Provider getProvider()
このキーストアのプロバイダを返します。

戻り値:
このキーストアのプロバイダ

getType

public final String getType()
このキーストアの型を返します。

戻り値:
このキーストアの型

getKey

public final Key getKey(String alias,
                        char[] password)
                 throws KeyStoreException,
                        NoSuchAlgorithmException,
                        UnrecoverableKeyException
指定されたパスワードを使って、指定された別名に関連した鍵を復元し、その鍵を返します。

パラメータ:
alias - 別名
password - 鍵を復元するためのパスワード
戻り値:
要求される鍵。指定された別名が存在しないか、「鍵エントリ」を識別しない場合は null
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合
NoSuchAlgorithmException - 鍵を復元するためのアルゴリズムが見つからない場合
UnrecoverableKeyException - 指定されたパスワードが間違っている場合など、鍵を復元できない場合

getCertificateChain

public final Certificate[] getCertificateChain(String alias)
                                        throws KeyStoreException
指定された別名に関連付けられた証明書チェーンを返します。

パラメータ:
alias - 別名
戻り値:
証明書チェーン。順番は、ユーザーの証明書が最初でルート証明書発行局が最後。指定された別名が存在しないか、証明書チェーンを含んでいない (指定された別名によって「信頼できる証明書エントリ」または証明書チェーンを含まない「鍵エントリ」が識別される) 場合は null
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

getCertificate

public final Certificate getCertificate(String alias)
                                 throws KeyStoreException
指定された別名に関連付けられた証明書を返します。

指定された別名によって「信頼できる証明書エントリ」が識別される場合は、そのエントリに関連付けられた証明書が返されます。指定された別名によって「鍵エントリ」が識別される場合は、そのエントリの証明書チェーンの最初の要素が返されます。そのエントリが証明書チェーンを含まない場合は、null が返されます。

パラメータ:
alias - 別名
戻り値:
証明書。指定された別名が存在しないか、または証明書を含まない場合は null
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

getCreationDate

public final Date getCreationDate(String alias)
                           throws KeyStoreException
指定された別名によって識別されるエントリの作成日を返します。

パラメータ:
alias - 別名
戻り値:
このエントリの作成日。指定された別名が存在しない場合は null
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

setKeyEntry

public final void setKeyEntry(String alias,
                              Key key,
                              char[] password,
                              Certificate[] chain)
                       throws KeyStoreException
指定された別名に指定された鍵を割り当て、指定されたパスワードでその鍵を保護します。

指定された鍵が java.security.PrivateKey 型である場合、その鍵には対応する公開鍵を証明する証明書チェーンが含まれていなければなりません。

指定された別名がすでに存在する場合は、それに関連したキーストア情報は、指定された鍵と証明書チェーンによってオーバーライドされます。

パラメータ:
alias - 別名
key - 別名に関連付ける鍵
password - 鍵を保護するためのパスワード
chain - 対応する公開鍵の証明書チェーン。指定された鍵が java.security.PrivateKey 型である場合にのみ必要
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合、指定された鍵を保護できない場合、またはこの処理がなんらかの原因で失敗した場合

setKeyEntry

public final void setKeyEntry(String alias,
                              byte[] key,
                              Certificate[] chain)
                       throws KeyStoreException
指定された別名に、すでに保護されている指定の鍵を割り当てます。

保護された鍵が java.security.PrivateKey 型である場合、その鍵には対応する公開鍵を証明する証明書チェーンが含まれていなければなりません。

指定された別名がすでに存在する場合は、それに関連したキーストア情報は、指定された鍵と証明書チェーンによってオーバーライドされます。

パラメータ:
alias - 別名
key - 別名に関連付ける保護形式の鍵
chain - 対応する公開鍵の証明書チェーン。保護された鍵が java.security.PrivateKey 型である場合にのみ有効
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合、またはこの処理がなんらかの原因で失敗した場合

setCertificateEntry

public final void setCertificateEntry(String alias,
                                      Certificate cert)
                               throws KeyStoreException
指定された別名に、指定された証明書を割り当てます。

指定された別名がこのキーストアに存在し、それによって「信頼できる証明書エントリ」が識別される場合は、それに関連付けられた証明書が、指定された証明書でオーバーライドされます。

パラメータ:
alias - 別名
cert - 証明書
例外:
KeyStoreException - キーストアが初期化されていない場合、指定された別名がすでに存在していてもそれによって「信頼できる証明書エントリ」が識別されない場合、またはこの処理がなんらかの原因で失敗した場合

deleteEntry

public final void deleteEntry(String alias)
                       throws KeyStoreException
このキーストアから、指定された別名によって識別されるエントリを削除します。

パラメータ:
alias - 別名
例外:
KeyStoreException - キーストアが初期化されていない場合、またはエントリを削除できない場合

aliases

public final Enumeration aliases()
                          throws KeyStoreException
このキーストアのすべての別名を一覧表示します。

戻り値:
別名の列挙
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

containsAlias

public final boolean containsAlias(String alias)
                            throws KeyStoreException
このキーストアに、指定された別名が存在するかどうかを判定します。

パラメータ:
alias - 別名
戻り値:
別名が存在する場合は true、そうでない場合は false
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

size

public final int size()
               throws KeyStoreException
このキーストアのエントリ数を取得します。

戻り値:
このキーストアのエントリ数
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

isKeyEntry

public final boolean isKeyEntry(String alias)
                         throws KeyStoreException
指定された別名で識別されるエントリが「鍵エントリ」である場合は true、そうでない場合は false を返します。

パラメータ:
alias - 判定対象となるキーストアエントリの別名
戻り値:
指定された別名で識別されるエントリが「鍵エントリ」である場合は true、そうでない場合は false
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

isCertificateEntry

public final boolean isCertificateEntry(String alias)
                                 throws KeyStoreException
指定された別名で識別されるエントリが「信頼できる証明書エントリ」である場合は true、そうでない場合は false を返します。

パラメータ:
alias - 判定対象となるキーストアエントリの別名
戻り値:
指定された別名で識別されるエントリが「信頼できる証明書エントリ」である場合は true、そうでない場合は false
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

getCertificateAlias

public final String getCertificateAlias(Certificate cert)
                                 throws KeyStoreException
指定された証明書と一致する証明書がある最初のキーストアエントリの別名を返します。

このメソッドは、指定された証明書を各キーストアエントリと照合します。処理対象のエントリが「信頼できる証明書エントリ」である場合は、指定された証明書がそのエントリの証明書と比較されます。処理対象のエントリが「鍵エントリ」である場合は、指定された証明書がそのエントリの証明書チェーン (存在する場合) の最初の要素と比較されます。

パラメータ:
cert - 照合する証明書
戻り値:
一致する証明書を含む最初のエントリの別名。そのようなエントリがこのキーストアに存在しない場合は null
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

store

public final void store(OutputStream stream,
                        char[] password)
                 throws KeyStoreException,
                        IOException,
                        NoSuchAlgorithmException,
                        CertificateException
指定された出力ストリームにこのキーストアを格納し、指定されたパスワードでその整合性を保護します。

パラメータ:
stream - このキーストアを書き込む出力ストリーム
password - キーストアの整合性を検査するためのパスワード
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合
IOException - データに入出力の問題があった場合
NoSuchAlgorithmException - 適切なデータ整合性アルゴリズムが見つからなかった場合
CertificateException - キーストアデータに含まれるどの証明書も格納できなかった場合

load

public final void load(InputStream stream,
                       char[] password)
                throws IOException,
                       NoSuchAlgorithmException,
                       CertificateException
指定された入力ストリームからこのキーストアをロードします。

パスワードを指定すると、それを使ってキーストアデータの整合性が検査されます。パスワードを指定しないと、キーストアの整合性検査は行われません。

空のキーストアを作成する場合、あるいはキーストアがハードウェアトークンデバイス上に格納されているなどの理由でキーストアをストリームから初期化できない場合は、stream 引数として null を渡します。

このキーストアがすでにロードされている場合、このキーストアはふたたび初期化され、指定されたストリームからロードし直されます。

パラメータ:
stream - キーストアのロード元の入力ストリーム。空のキーストアを作成する場合は null
password - キーストアの整合性検査用のパスワード (省略可能)
例外:
IOException - キーストアデータに入出力または形式の問題があった場合
NoSuchAlgorithmException - キーストアの整合性を検査するアルゴリズムが見つからなかった場合
CertificateException - キーストアのどの証明書もロードできなかった場合

getDefaultType

public static final String getDefaultType()
Java セキュリティープロパティーファイルに指定されているデフォルトのキーストア型を返します。ただし、そのようなプロパティーが存在しない場合は「jks」(Java keystore の略語) という文字列を返します。Java セキュリティープロパティーファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルに格納されています。ここで、<JAVA_HOME> は SDK のインストール先ディレクトリを指します。

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

デフォルトのキーストア型を変更するには、Java セキュリティープロパティーファイルの keystore.type セキュリティープロパティーの値を目的のキーストア型に設定します。

戻り値:
Java セキュリティープロパティーファイルで指定されたデフォルトのキーストア型。該当するプロパティーが存在しない場合は、"jks"の文字列

Foundation 1.1.2

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。