概要

keytool は、鍵と証明書の管理ツールである。鍵の生成、証明書の確認、証明書の獲得、証明書のインポート、証明書の削除及び自己署名証明書の生成を行える。

keytoolのコマンドオプションを次に示す。

-dname dname

X.500の識別名を指定する。

-keyalg keyalg
鍵のペアを生成するのに使うアルゴリズムを指定する。
-keypass keypass
非公開鍵を保護するのに使うパスワードを指定する。
-keystore keystore
キーストアの場所を指定する。
-protected ture|false
専用PINリーダーなどの保護される認証パスを介してパスワードを指定する必要がある場合に指定する。
-providerArg provider_arg
-providerClass で指定したクラスのコンストラクタに対する入力引数を指定する。
-providerClass provider_class
マスタクラスファイルの名前を指定する。
-providerName provider_name
暗号化サービスプロバイダを指定する。
-storepass storepass
キーストアのパスワードを指定する。-storepassオプションを指定しない場合は、パスワードの入力を求められる。 $JAVA_HOME/jre/lib/security/cacerts のデフォルトパスワードは changeit である。
-storetype storetype
キーストアのタイプを指定する。
-v
冗長モード。詳細な証明書情報が出力される。
-validity val_days
証明書の有効期限を指定する。

ヘルプの表示

keytool -help

コマンドとそのオプションの一覧を表示する。

キーストアの内容を表示

keytool -list [-v|-rfc] [-alias alias ] [-keystore keystore ] [-storepass storepass ] [-storetype storetype ] [-providerName provider_name ] [-providerClass provider_class ] [-providerArg provider_arg ] [-protected true|false] [-J java_option ]

指定した別名のキーストアエントリの内容を標準出力に出力する。別名を指定しなかった場合は、キーストア全体の内容を出力する。

$ $JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
キーストアのパスワードを入力してください: changeit

キーストアのタイプ: jks
キーストアのプロバイダ: SUN

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

...

証明書の内容を表示

keytool -printcert [-file cert_file ] [-v] [-J java_option ]

指定したファイルから証明書を読み込み、証明書の内容を標準出力に出力する。ファイルを指定しなかった場合は、標準入力から証明書を読み込む。

証明書のインポート

keytool -importcert [-alias alias ] [-file cert_file ] [-keypass keypass ] [-noprompt] [-trustcacerts] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class ] [-providerArg provider_arg ] [-v] [-protected true|false] [-J java_option ]

指定した証明書ファイルを読み込み、指定した別名のキーストアエントリに格納する。証明書ファイルを指定しなかった場合は、標準入力から証明書又はPKCS #7応答を読み込む。

鍵のペアを生成

keytool -genkeypair [-alias alias ] [-keyarg keyarg ] [-keysize keysize ] [-sigarg sigarg ] [-dname dname ] [-keypass keypass ] [-validity val_days ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerClass provider_class ] [-providerArg provider_arg ] [-v] [-protected true|false] [-J java_option ]

鍵のペア(公開鍵及び関連する非公開鍵)を生成する。

秘密鍵の生成

keytool -genseckey [-alias alias ] [-keyarg keyarg ] [-keysize keysize ] [-keypass keypass ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerClass provider_class ] [-providerArg provider_arg ] [-v] [-protected true|false] [-J java_option ]

秘密鍵を生成して、キーストアに格納する。

キーストアのインポート

keytool -importkeystore -srckeystore src_keystore -destkeystore dest_keystore [-srcstoretype src_storetype ] [-deststoretype dest_storetype ] [-srcstorepass src_storepass ] [-deststorepass dest_storepass ] [-srcprotected] [-destprotected] [-srcalias src_alias ] [-destalias dest_alias ] [-srckeypass src_keypass ] [-destkeypass dest_keypass ] [-noprompt] [{-srcProviderName src_provider_name ] [-destProviderName dest_provider_name ] [-providerClass provider_class_name [-providerArg provider_arg ]] [-v] [-protected] [-J java_option ]

ソースキーストアからターゲットキーストアへ、単一のエントリまたはすべてのエントリをインポートする。

証明書署名要求の生成

keytool -certreq [-alias alias ] [-sigalg sigalg ] [-file certreq_file ] [-keypass keypass ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class_name [-providerArg provider_arg ]] [-v] [-protected] [-J java_option ]

PKCS#10形式を使って証明書署名要求(CSR)を生成する。

証明書のエクスポート

keytool -exportcert [-alias alias ] [-file cert_file ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class_name ] [-providerArg provider_arg ] [-rfc] [-v] [-protected] [{-J java_option ]

キーストアから証明書を読み込み、ファイルに格納する。

キーストアのパスワードを変更

keytool -storepasswd [-new new_storepass ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class_name [-providerArg provider_arg ]] [-v] [-J java_option ]

キーストアのパスワードを変更する。

非公開/秘密鍵のパスワードを変更

keytool -keypasswd [-alias alias ] [-keypass old_keypass ] [-new new_keypass ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class ] [-providerArg provider_arg ] [-v] [-J java_option ]

非公開/秘密鍵のパスワードを変更する。

エントリの削除

keytool -delete [-alias alias ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class [-providerArg provider_arg ]] [-v] [-protected] [-J java_option ]

指定したエントリをキーストアから削除する。

キーストアエントリの移動

keytool -changealias [-alias alias ] [-destalias dest_alias ] [-keypass keypass ] [-storetype storetype ] [-keystore keystore ] [-storepass storepass ] [-providerName provider_name ] [-providerClass provider_class [-providerArg provider_arg ]] [-v] [-protected] [-J java_option ]

指定した別名から新しい別名へ、既存のキーストアエントリを移動する。

javac HelloWorld.java