【1】 キーストアを作成する
構文
keytool -genkey -alias [キーストア内での識別子] -keyalg RSA -keypass [パスワード] -storepass [パスワード] -keystore [キーストアファイル名] -validity [有効日数] ※ なお、名前のところでは、ホスト名を入力しといた方がいい詳細版
keytool -genkey -alias [識別子] -keyalg [鍵生成アルゴリズム] -keysize [鍵長(ビット)] -keystore [ファイル名] -validity [有効日数] -storepass [パスワード]
コマンド例
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3650
参考文献
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java/keytoolhttp://sehermitage.web.fc2.com/program/java_keytool.html
【2】 証明書署名要求を生成
* 証明書署名要求:CSR
構文
keytool -certreq -alias [証明書の名称] -keystore [キーストアファイル名] -storepass [パスワード] -file [証明書署名要求ファイル名]
コマンド例
"%JAVA_HOME%\bin\keytool" -certreq -alias tomcat -keystore server.keystore -storepass changeit -file server.csr
【3】キーストアから 証明書署名要求をエクスポートする
* 証明書署名要求をファイルにエクスポート
構文
keytool -export -alias [証明書の名称] -keystore [キーストアファイル名] -storepass [パスワード] -file [ファイル名]
コマンド例
"%JAVA_HOME%\bin\keytool" -export -alias tomcat -keystore server.keystore -storepass changeit -file server.cer
【4】クライアントキーストアに証明書署名要求をインポートする
構文
keytool -import -trustcacerts -alias [エイリアス(証明書の名称)] -storepass [パスワード] -file [証明書ファイル名] -keystore [キーストアファイル名] -noprompt-trustcacerts オプション
* 追加の証明書は信頼できる証明書のチェーンと見なすhttp://e-class.center.yuge.ac.jp/jdk_docs/ja/technotes/tools/solaris/keytool.html
-noprompt オプション
* ユーザとの対話無し => 「Trust this certificate? [no]」など聞いてこないhttps://docs.oracle.com/javase/jp/1.5.0/tooldocs/solaris/keytool.html
http://qiita.com/kirimin/items/e243972a9788730b6d41
コマンド例
"%JAVA_HOME%\bin\keytool" -import -trustcacerts -alias tomcat -storepass changeit -file server.cerキーストアを明示的に指定する
"%JAVA_HOME%\bin\keytool" -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -file server.cer
【5】キーストア一覧を表示する
構文
keytoo -list -v -keystore [キーストアファイル] -storepass [パスワード]
コマンド例
"%JAVA_HOME%\bin\keytool" -list -v -keystore server.keystore -storepass changeit
補足:指定したエイリアスのみ表示するには
* キーストア内に証明書が物凄いある状態だと、上記のコマンド例では、 該当するエイリアスの内容を見逃しやすい そのため、指定したエイリアスのみ表示する方法を考える解決案
# Linuxの場合 「 | grep -A 15 -h '【対象エイリアス】'」を追加して実行する # マッチした行から後15行を同時に検索結果として表示し、 # 検索結果の先頭にマッチしたファイル名を表示しないコマンド例
keytool -list -v -keystore server.keystore -storepass changeit | grep -A 15 -h 'tomcat'
【6】キーストアのエイリアスを削除する
構文
keytool -delete -alias xxxx -keystore [キーストアファイル名]
コマンド例
"%JAVA_HOME%\bin\keytool" -delete -alias tomcat -keystore server.keystore
【7】キーストアのパスワードを変更する
* デフォルトのパスワードが「changeit」(Change it:変更せよ)だし。
構文
keytool -storepasswd -keystore [キーストアファイル名] -storepass [古いパスワード] -new [新しいパスワード]
コマンド例
"%JAVA_HOME%\bin\keytool" -storepasswd -keystore server.keystore -storepass changeit -new newpassword
参考文献
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytoolキーストアのパスワードを変更する
http://ksoichiro.blogspot.jp/2012/10/android-keystore_18.html
Java
https://docs.oracle.com/cd/E19416-01/820-5959/ggezu/index.htmlhttps://docs.oracle.com/cd/E19416-01/820-5959/6nhaosbv3/index.html
https://docs.oracle.com/cd/E19416-01/820-5959/cnfg_ssl-rep_t/index.html