|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.security.KeyStore
public class KeyStore
このクラスは、暗号化の鍵と証明書の格納場所を表現したものです。
KeyStore
は異なる型のエントリを管理します。個々のエントリ型は KeyStore.Entry
インタフェースを実装します。次の 3 つの基本 KeyStore.Entry
実装が提供されています。
この型のエントリには、暗号化 PrivateKey
が格納されます。 許可されないアクセスを防ぐために保護形式で格納できるようになっています。また、対応する公開鍵の証明書チェーンもいっしょに格納されます。
非公開鍵と証明書チェーンは、指定されたエンティティーによって自身の認証のために使用されます。この認証が利用されるのは、ソフトウェア配布組織がソフトウェアのリリースやライセンス供与の一貫として JAR ファイルに署名する場合などです。
この型のエントリには暗号化 SecretKey
が格納されます。 なお、許可されないアクセスを防ぐために保護形式で格納できるようになっています。
この型のエントリには別の組織に属する単一の公開鍵 Certificate
が格納されます。これは、キーストアの所有者が、証明書内の公開鍵が実際に証明書の「サブジェクト」(所有者) によって識別されたアイデンティティーに属することを信頼するためです。
この種類のエントリは、ほかの組織の認証に使うことができます。
キーストア内の各エントリは、「別名」文字列によって識別されます。非公開鍵とそれに関連付けられた証明書チェーンの場合は、これらの文字列は、エンティティー自体が認証するというように、方法別に区別されます。たとえば、エンティティーが異なる証明書発行局を使ったり、異なる公開鍵アルゴリズムを使ったりして、エンティティー自体を認証することも可能です。
別名の大文字と小文字が区別されるかどうかは、実装によって異なります。問題の発生を防ぐため、KeyStore 内では、大文字と小文字の区別が異なるだけの別名を使用しないようにしてください。
キーストアが持続性があるかどうか、および持続性がある場合に使われる機構は、ここでは指定されません。これにより、重要な (秘密または非公開) 鍵を保護するためのさまざまな技術を使うことができます。スマートカードまたはその他の統合暗号化エンジン (SafeKeyper) を使うことも 1 つの方法です。また、ファイルなどのより単純な機構をさまざまな形式で使うこともできます。
KeyStore オブジェクトを要求する典型的な方法としては、デフォルトの型を利用する方法と、特定のキーストア型を指定する方法があります。
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());システムは、デフォルト型のキーストア実装を返します。
KeyStore ks = KeyStore.getInstance("JKS");システムは、環境内で利用可能な実装のうち、指定されたキーストア型にもっとも適したものを返します。
特定のキーストアにアクセスできるようにするには、そのキーストアをロード
する必要があります。
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); // get user password and file input stream char[] password = getPassword(); java.io.FileInputStream fis = null; try { fis = new java.io.FileInputStream("keyStoreName"); ks.load(fis, password); } finally { if (fis != null) { fis.close(); } }上記の
load
メソッドを使って空のキーストアを作成するには、InputStream
引数として null
を渡します。
キーストアのロードが完了すると、既存のエントリをキーストアから読み取ったり、新しいエントリをキーストアに書き込んだりできます。
// get my private key KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry("privateKeyAlias", password); PrivateKey myPrivateKey = pkEntry.getPrivateKey(); // save my secret key javax.crypto.SecretKey mySecretKey; KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(mySecretKey); ks.setEntry("secretKeyAlias", skEntry, new KeyStore.PasswordProtection(password)); // store away the keystore java.io.FileOutputStream fos = null; try { fos = new java.io.FileOutputStream("newKeyStoreName"); ks.store(fos, password); } finally { if (fos != null) { fos.close(); } }なお、上記サンプルコードで示したように、キーストアのロード、非公開鍵エントリの保護、秘密鍵エントリの保護、およびキーストアの格納には同じパスワードを使用できますが、異なるパスワードやその他の保護パラメータも使用できます。
PrivateKey
,
SecretKey
,
Certificate
入れ子のクラスの概要 | |
---|---|
static class |
KeyStore.Builder
インスタンス化すべき KeyStore オブジェクトを記述したクラスです。 |
static class |
KeyStore.CallbackHandlerProtection
CallbackHandler をカプセル化した ProtectionParameter です。 |
static interface |
KeyStore.Entry
KeyStore エントリの種類に対するマーカーインタフェースです。 |
static interface |
KeyStore.LoadStoreParameter
KeyStore の load パラメータと store パラメータに対するマーカーインタフェースです。 |
static class |
KeyStore.PasswordProtection
ProtectionParameter のパスワードベースの実装です。 |
static class |
KeyStore.PrivateKeyEntry
特定の PrivateKey と対応する証明書チェーンが格納された KeyStore エントリです。 |
static interface |
KeyStore.ProtectionParameter
キーストアの保護パラメータに対するマーカーインタフェースです。 |
static class |
KeyStore.SecretKeyEntry
特定の SecretKey が格納された KeyStore エントリです。 |
static class |
KeyStore.TrustedCertificateEntry
信頼できる Certificate が格納された KeyStore エントリです。 |
コンストラクタの概要 | |
---|---|
protected |
KeyStore(KeyStoreSpi keyStoreSpi,
Provider provider,
String type)
指定された型の KeyStore オブジェクトを作成し、そのオブジェクトで、指定されたプロバイダの実装である SPI オブジェクトをカプセル化します。 |
メソッドの概要 | |
---|---|
Enumeration<String> |
aliases()
このキーストアのすべての別名を一覧表示します。 |
boolean |
containsAlias(String alias)
このキーストアに、指定された別名が存在するかどうかを判定します。 |
void |
deleteEntry(String alias)
このキーストアから、指定された別名によって識別されるエントリを削除します。 |
boolean |
entryInstanceOf(String alias,
Class<? extends KeyStore.Entry> entryClass)
指定された alias のキーストア Entry が、指定された entryClass のインスタンスまたはサブクラスであるかどうかを判定します。 |
Certificate |
getCertificate(String alias)
指定された別名に関連した証明書を返します。 |
String |
getCertificateAlias(Certificate cert)
指定された証明書と一致する証明書がある最初のキーストアエントリの別名を返します。 |
Certificate[] |
getCertificateChain(String alias)
指定された別名に関連付けられた証明書チェーンを返します。 |
Date |
getCreationDate(String alias)
指定された別名によって識別されるエントリの作成日を返します。 |
static String |
getDefaultType()
Java セキュリティープロパティーファイルに指定されているデフォルトのキーストア型を返します。 |
KeyStore.Entry |
getEntry(String alias,
KeyStore.ProtectionParameter protParam)
指定された保護パラメータを使用して、指定された別名に対するキーストア Entry を取得します。 |
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)
指定された別名で識別されるエントリが、 setCertificateEntry を呼び出して作成されたエントリ、あるいは TrustedCertificateEntry を指定して setEntry を呼び出して作成されたエントリのいずれかである場合、true を返します。 |
boolean |
isKeyEntry(String alias)
指定された別名で識別されるエントリが、 setKeyEntry を呼び出して作成されたエントリ、あるいは PrivateKeyEntry または SecretKeyEntry を指定して setEntry を呼び出して作成されたエントリのいずれかである場合、true を返します。 |
void |
load(InputStream stream,
char[] password)
指定された入力ストリームからこのキーストアをロードします。 |
void |
load(KeyStore.LoadStoreParameter param)
指定された LoadStoreParameter を使用してこのキーストアをロードします。 |
void |
setCertificateEntry(String alias,
Certificate cert)
指定された別名に、指定された信頼できる証明書を割り当てます。 |
void |
setEntry(String alias,
KeyStore.Entry entry,
KeyStore.ProtectionParameter protParam)
キーストア Entry を指定された別名で保存します。 |
void |
setKeyEntry(String alias,
byte[] key,
Certificate[] chain)
指定された別名に、すでに保護されている指定の鍵を割り当てます。 |
void |
setKeyEntry(String alias,
Key key,
char[] password,
Certificate[] chain)
指定された別名に指定された鍵を割り当て、指定されたパスワードでその鍵を保護します。 |
int |
size()
このキーストアのエントリ数を取得します。 |
void |
store(KeyStore.LoadStoreParameter param)
指定された LoadStoreParameter を使用してこのキーストアを格納します。 |
void |
store(OutputStream stream,
char[] password)
指定された出力ストリームにこのキーストアを格納し、指定されたパスワードでその整合性を保護します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
keyStoreSpi
- プロバイダの実装provider
- プロバイダtype
- キーストア型メソッドの詳細 |
---|
public static KeyStore getInstance(String type) throws KeyStoreException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたタイプをサポートする最初の Provider の KeyStoreSpi 実装をカプセル化する新しい KeyStore オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- キーストア型。
標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
KeyStoreException
- 指定された型の KeyStoreSpi 実装をサポートする Provider が存在しない場合Provider
public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
指定されたプロバイダの KeyStoreSpi 実装をカプセル化する新しい KeyStore オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- キーストア型。
標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照provider
- プロバイダ名
KeyStoreException
- 指定されたプロバイダに指定された型の KeyStoreSpi 実装がない場合
NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合
IllegalArgumentException
- プロバイダの名前が null か空の場合Provider
public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
指定された Provider オブジェクトの KeyStoreSpi 実装をカプセル化する新しい KeyStore オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
type
- キーストア型。
標準のキーストア型については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照provider
- プロバイダ
KeyStoreException
- 指定された Provider オブジェクトに指定された型の KeyStoreSpi 実装がない場合
IllegalArgumentException
- 指定されたプロバイダが null の場合Provider
public static final String getDefaultType()
デフォルトのキーストア型を使用するのは、アプリケーションで getInstance
メソッドを呼び出すときに、ハードコードされたキーストア型を使用しない場合、およびユーザーが独自のキーストア型を指定しないときに、デフォルトのキーストア型を提供する場合です。
デフォルトのキーストア型を変更するには、Java セキュリティープロパティーファイルの keystore.type セキュリティープロパティーの値を目的のキーストア型に設定します。
public final Provider getProvider()
public final String getType()
public final Key getKey(String alias, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
setKeyEntry
を呼び出すか、あるいは PrivateKeyEntry
または SecretKeyEntry
を指定して setEntry
を呼び出すことでその別名に関連付けられている必要があります。
alias
- 別名password
- 鍵を復元するためのパスワード
KeyStoreException
- キーストアが初期化 (ロード) されていない場合
NoSuchAlgorithmException
- 鍵を復元するためのアルゴリズムが見つからない場合
UnrecoverableKeyException
- 指定されたパスワードが間違っている場合など、鍵を復元できない場合public final Certificate[] getCertificateChain(String alias) throws KeyStoreException
setKeyEntry
を呼び出すか、あるいは PrivateKeyEntry
を指定して setEntry
を呼び出すことで別名に関連付けられている必要があります。
alias
- 別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final Certificate getCertificate(String alias) throws KeyStoreException
指定された別名によって識別されるエントリが、setCertificateEntry
を呼び出して作成されたエントリ、あるいは TrustedCertificateEntry
を指定して setEntry
を呼び出して作成されたエントリのいずれかである場合、そのエントリ内に格納されている信頼できる証明書が返されます。
指定された別名によって識別されるエントリが、setKeyEntry
を呼び出して作成されたエントリ、あるいは PrivateKeyEntry
を指定して setEntry
を呼び出して作成されたエントリのいずれかである場合、そのエントリ内の証明書チェーンの最初の要素が返されます。
alias
- 別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final Date getCreationDate(String alias) throws KeyStoreException
alias
- 別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合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
- キーストアが初期化 (ロード) されていない場合、指定された鍵を保護できない場合、またはこの処理がなんらかの原因で失敗した場合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
- キーストアが初期化 (ロード) されていない場合、またはこの処理がなんらかの原因で失敗した場合public final void setCertificateEntry(String alias, Certificate cert) throws KeyStoreException
指定された別名によって識別されるエントリが、setCertificateEntry
を呼び出して作成された既存エントリ、あるいは TrustedCertificateEntry
を指定して setEntry
を呼び出して作成された既存エントリのいずれかである場合、その既存エントリ内に格納されている信頼できる証明書が、指定された証明書で上書きされます。
alias
- 別名cert
- 証明書
KeyStoreException
- キーストアが初期化されていない場合、指定された別名がすでに存在していてもそれによって識別されるエントリが信頼できる証明書を含んでいない場合、またはこの処理がなんらかの原因で失敗した場合public final void deleteEntry(String alias) throws KeyStoreException
alias
- 別名
KeyStoreException
- キーストアが初期化されていない場合、またはエントリを削除できない場合public final Enumeration<String> aliases() throws KeyStoreException
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final boolean containsAlias(String alias) throws KeyStoreException
alias
- 別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final int size() throws KeyStoreException
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final boolean isKeyEntry(String alias) throws KeyStoreException
setKeyEntry
を呼び出して作成されたエントリ、あるいは PrivateKeyEntry
または SecretKeyEntry
を指定して setEntry
を呼び出して作成されたエントリのいずれかである場合、true を返します。
alias
- 判定対象となるキーストアエントリの別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final boolean isCertificateEntry(String alias) throws KeyStoreException
setCertificateEntry
を呼び出して作成されたエントリ、あるいは TrustedCertificateEntry
を指定して setEntry
を呼び出して作成されたエントリのいずれかである場合、true を返します。
alias
- 判定対象となるキーストアエントリの別名
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final String getCertificateAlias(Certificate cert) throws KeyStoreException
このメソッドは、指定された証明書を各キーストアエントリと照合します。処理対象のエントリが、setCertificateEntry
を呼び出して作成されたエントリ、あるいは TrustedCertificateEntry
を指定して setEntry
を呼び出して作成されたエントリである場合、指定された証明書はそのエントリの証明書と比較されます。
処理対象のエントリが、setKeyEntry
を呼び出して作成されたエントリ、あるいは PrivateKeyEntry
を指定して setEntry
を呼び出して作成されたエントリである場合、指定された証明書はそのエントリの証明書チェーンの最初の要素と比較されます。
cert
- 照合する証明書
KeyStoreException
- キーストアが初期化 (ロード) されていない場合public final void store(OutputStream stream, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
stream
- このキーストアを書き込む出力ストリームpassword
- キーストアの整合性を検査するためのパスワード
KeyStoreException
- キーストアが初期化 (ロード) されていない場合
IOException
- データに入出力の問題があった場合
NoSuchAlgorithmException
- 適切なデータ整合性アルゴリズムが見つからなかった場合
CertificateException
- キーストアデータに含まれるどの証明書も格納できなかった場合public final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
を使用してこのキーストアを格納します。
param
- キーストアの格納方法を指定した LoadStoreParameter
。
null
も指定可能
IllegalArgumentException
- 指定された LoadStoreParameter
入力が認識されない場合
KeyStoreException
- キーストアが初期化 (ロード) されていない場合
IOException
- データに入出力の問題があった場合
NoSuchAlgorithmException
- 適切なデータ整合性アルゴリズムが見つからなかった場合
CertificateException
- キーストアデータに含まれるどの証明書も格納できなかった場合public final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
パスワードを指定すると、キーストアがハードウェアトークンデバイス上に存在する場合などに、キーストアのロック解除やキーストアデータの整合性検査ができます。整合性検査用のパスワードが指定されなかった場合、整合性検査は実行されません。
空のキーストアを作成する場合、あるいはキーストアをストリームから初期化できない場合は、stream
引数として null
を渡します。
このキーストアがすでにロードされている場合、このキーストアは再び初期化され、指定されたストリームからロードし直されます。
stream
- キーストアのロード元の入力ストリームまたは null
password
- キーストアの整合性検査用パスワード、キーストアのロック解除用パスワード、または null
IOException
- キーストアデータで入出力または形式に関する問題が発生した場合、パスワードが必要であるのに指定されなかった場合、または指定されたパスワードが間違っている場合。パスワードが正しくなかったためにエラーが発生した場合、IOException
の原因
は UnrecoverableKeyException
NoSuchAlgorithmException
- キーストアの整合性を検査するアルゴリズムが見つからなかった場合
CertificateException
- キーストアのどの証明書もロードできなかった場合public final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
を使用してこのキーストアをロードします。
このキーストアがすでにロードされている場合、このキーストアは再び初期化され、指定されたストリームからロードし直されます。
param
- キーストアのロード方法を指定した LoadStoreParameter
。
null
も指定可能
IllegalArgumentException
- 指定された LoadStoreParameter
入力が認識されない場合
IOException
- キーストアデータに入出力または形式の問題があった場合。ProtectionParameter
が正しくなかった (たとえばパスワードが正しくなかった) ためにエラーが発生した場合、IOException
の原因
は UnrecoverableKeyException
NoSuchAlgorithmException
- キーストアの整合性を検査するアルゴリズムが見つからなかった場合
CertificateException
- キーストアのどの証明書もロードできなかった場合public final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Entry
を取得します。
alias
- この別名に対するキーストア Entry
を取得protParam
- Entry
の保護に使用される ProtectionParameter
。
null
も指定可能
Entry
。
そのようなエントリが存在しない場合は null
NullPointerException
- alias
が null
の場合
NoSuchAlgorithmException
- エントリを復元するためのアルゴリズムが見つからない場合
UnrecoverableEntryException
- 指定された
protParam
が不十分または無効である場合
UnrecoverableKeyException
- エントリが PrivateKeyEntry
または SecretKeyEntry
で、指定された protParam
に鍵の復元に必要な情報が含まれていない場合 (たとえばパスワードが誤っている場合)
KeyStoreException
- キーストアが初期化 (ロード) されていない場合setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)
public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Entry
を指定された別名で保存します。保護パラメータは、Entry
を保護するために使用されます。
指定された別名のエントリがすでに存在する場合、そのエントリは上書きされます。
alias
- この別名でキーストア Entry
を保存entry
- 保存する Entry
protParam
- Entry
の保護に使用される ProtectionParameter
。
null
も指定可能
NullPointerException
- alias
または entry
が null
の場合
KeyStoreException
- キーストアが初期化 (ロード) されていない場合、またはこの処理がなんらかの原因で失敗した場合getEntry(String, KeyStore.ProtectionParameter)
public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
alias
のキーストア Entry
が、指定された entryClass
のインスタンスまたはサブクラスであるかどうかを判定します。
alias
- 別名entryClass
- エントリクラス
alias
のキーストア Entry
が、指定された entryClass
のインスタンスまたはサブクラスである場合は true、そうでない場合は false
NullPointerException
- alias
または entryClass
が null
の場合
KeyStoreException
- キーストアが初期化 (ロード) されていない場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。