2012年4月12日木曜日

keytoolを使ってみた

keytoolを使用して、暗号化の鍵を生成してみよう。

※keytoolは、JAVA_HOME/bin配下にいます。

鍵を登録

keytoolの「-genseckey」を使用して暗号化の鍵を登録できます。 【ポイント】
  • storetypeには、「JCEKS」を指定する。
  • keyalgには、鍵を生成するためのアルゴリズムを指定する。
  • keysizeは、秘密鍵を生成する際には必須。今回は、AES暗号用の128ビットの鍵を生成している。
  • keystoreのファイル名。指定しない場合は、HOME/.keystoreとなる。
  • aliasには、鍵を識別するための任意の名前を指定する。 KeyStore#getKeyを使用して、鍵を取得する際に指定する名前となる。
  • storepassには、キーストアにアクセスするためのパスワードを設定する。
keytool -genseckey -storetype JCEKS -keyalg AES -keysize 128 -keystore ./.key -storepass password -alias key1 

上記コマンド実行後に、以下のメッセージが表示されます。 鍵ごとにパスワードを設定する場合には、新しいパスワードを入力します。 keysotreにアクセスする際に必要となるパスワードと同じにする場合には、なにも入力しなくて大丈夫です。
 の鍵パスワードを入力してください。 (キーストアのパスワードと同じ場合は RETURN を押してください): 

登録されている鍵をリスト表示

listを指定すると、登録されている鍵や証明書をリスト表示することが出来ます。

$ keytool -list -storepass password -keystore .key -storetype JCEKS

キーストアのタイプ: JCEKS キーストアのプロバイダ: SunJCE

キーストアには 2 エントリが含まれます。

key1, 2012/04/12, SecretKeyEntry, mykey, 2012/04/12, SecretKeyEntry, 

登録されている鍵を削除

deleteを指定すると登録されている鍵を削除できます。 deleteを実行後にlist表示してみると、鍵が上のlist表示の時から減っていることが分かります。
$ keytool -delete -alias mykey -keystore .key -storepass password -storetype JCEKS $ keytool -list -storepass password -keystore .key -storetype JCEKS

キーストアのタイプ: JCEKS キーストアのプロバイダ: SunJCE

キーストアには 1 エントリが含まれます。

key1, 2012/04/12, SecretKeyEntry,