Java プラットフォーム 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 を渡します。

導入されたバージョン:
JDK1.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 セキュリティプロパティファイルに指定されているデフォルトのキーストアのタイプ、つまり「jks」(Java keystore の略語) という文字列を返します。
static KeyStore getInstance(String type)
          指定されたタイプのキーストアオブジェクトを作成します。
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 - プロバイダが設定されていない場合
関連項目:
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 型である場合、その鍵には対応する公開鍵を証明する証明連鎖が含まれていなければなりません。元になるキーストアの実装のタイプが jks の場合、key は PKCS #8 標準の定義に従って EncryptedPrivateKeyInfo として符号化されなければなりません。

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

パラメータ:
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 を返します。
戻り値:
指定された別名で識別されるエントリが「鍵エントリ」である場合は true、そうでない場合は false
例外:
KeyStoreException - キーストアが初期化 (ロード) されていない場合

isCertificateEntry

public final boolean isCertificateEntry(String alias)
                                 throws KeyStoreException
指定された別名で識別されるエントリが「信頼できる証明書エントリ」である場合は true、そうでない場合は false を返します。
戻り値:
指定された別名で識別されるエントリが「信頼できる証明書エントリ」である場合は 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 を渡します。

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

パラメータ:
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> は、JDK がインストールされたディレクトリです。

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

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


Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.