JavaTM 2 Platform
Std. Ed. v1.3

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 セキュリティプロパティファイルに指定されているデフォルトのキーストアタイプ、つまり「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 を返します。
パラメータ:
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 を渡します。

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

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

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

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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.