Javaのキーストアに証明書を追加する

JavaSSL証明書をインポートしないといけないことがあったので書いておく。

インポート前に今の証明書ストアをバックアップする

手動でインポートしてキーストアのファイルに変更が生じるとWindowsではJavaの自動アップデートができなくなってしまうので、いつでも戻せるようにバックアップを取っておく。
バックアップは単純なコピーでかまわない。
もしバックアップを忘れてしまったら自動アップデートができないので、最新版を使うには再インストールしないといけない。

証明書ストアのファイルはWindowsだと C:\Program Files\Java\jre6\lib\security\cacerts にある。
Linuxだといろいろ違ってくるだろうけど、Ubuntu amd64のsun-java6の場合は /usr/lib64/jvm/java-6-sun/jre/lib/security/cacerts にあった。

インポート

インポートに使うコマンドは keytool.exe (Linuxだとkeytool)で
"C:\Program Files\Java\jre6\bin\keytool.exe" にある。
Linuxだとそのままパスが通っているはず。

C:\Users\XXXXXXXXXXXXXX\MyKeyにある証明書をキーストアにインポートするには以下のコマンドを実行する。

"C:\Program Files\Java\jre6\bin\keytool.exe" -import -alias JP_ApplicationCA \
 -file "C:\Users\XXXXXXXXXXXXXX\MyKey" \
 -keystore "C:\Program Files\Java\jre6\lib\security\cacerts"

これを実行するとパスワードを聞かれるので changeit と入力する。

インポート時に証明書のフィンガープリントを確認すること。

Vista, Windows7だと「管理者として実行」した「コマンドプロンプト」でこのコマンドを実行する必要があるので注意。

参考

http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytool


インポートしないで実行時に読み込むこともできるらしい。できるならこっちがおすすめ。
Java で bit.ly API を SSL で呼び出す - ぐま あーかいぶ