Javaのキーストアに証明書を追加する
JavaにSSL証明書をインポートしないといけないことがあったので書いておく。
インポート前に今の証明書ストアをバックアップする
手動でインポートしてキーストアのファイルに変更が生じると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 で呼び出す - ぐま あーかいぶ