キーストア

2008年04月01日

キーストア

キーストア

キーストア (Key Store) は鍵と証明書を保管するためのデータベースファイル です。ファイル全体がパスワードによって暗号化されており、また鍵の保管区域である エントリと呼ばれる領域も個別のパスワードで保護することができるため、 スタンドアロン Java アプリケーションの鍵や証明書の保管ファイルなどに使用する ことができます*1

Java プログラム以外からでも JDK 付属のキーストア管理ツール keytool を使用して鍵や証明書の作成、削除、インポート、エクスポート、また Java では作成 できない自己署名証明書の作成が行えます。

なお、安全が保証されているドメイン (システム内のデータベースなど) を使用して 鍵を管理できるのであれば Key#getEncoded() メソッドで得られるバイナリを保管した 方が簡単です (共通鍵公開鍵 のサンプルコード参照)。

*1 鍵の保管には証明書が必要ですが、標準の Java 機能では 証明書を作成できないため実質 Java からは参照専用です。

新規作成と読み込み、保存

Java からキーストアにアクセスするには KeyStoreJava™ API リファレンス クラスを使用します。load() メソッドに null を指定する事で空のキーストアとして 使用する事ができます。

Java
// キーストアの新規構築と初期化
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(null, null);

Java で使用できるキーストアのアルゴリズムは こちら を参照。実行環境で実際に使用できるアルゴリズムは Security.getAlgorithms("KeyStore") で取得できます。

[CASEEXACTJKS, WINDOWS-ROOT, JCEKS, WINDOWS-MY, PKCS12, JKS]

既存のキーストアを読み込むには load() メソッドにファイルの入力ストリームとパス ワードを指定します (以下例外処理省略)。

Java
// キーストアの読み込み
KeyStore keyStore = KeyStore.getInstance("JKS");
InputStream in = new FileInputStream(file);
keyStore.load(in, password);
in.close();

キーストアをファイルに保存する場合は store() メソッドに出力先とパスワードを 指定します。

Java
// キーストアの書き込み
OutputStream out = new FileOutputStream(file);
keyStore.store(out, password);
out.close();
CVS 2008/04/16