2011年12月22日木曜日

JRE5 (1.5.0) の Verisign証明書ではまる。。

Javaでかかれたソフトウェアでエラーが発生。関連するシステムなので、トラブルシュートしてみる。

エラー内容はこんなカンジ。
IO Exception: sun.security.validator. ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
どうも証明書関係のエラーらしい。Java本格的にやって無いからよーわからん。

とりあえず、証明書関連と考えて、時期的に古いバージョンだなーと思ってVerisignのルート証明書が古いってことであたりを付けてみたが、コレがヒットした。

解決策はこんなカンジ。あ、問題はWindowsで起きてる。会議室では起きていない。(え?

1. 該当サイトのVerisignのルート証明書をエクスポートしてファイルに保存する。
※ちなみに、Firefoxでエクスポートするときに「ファイルの種類」を証明書パス付きで保存、を選んだ。あんまり大差ないと思うけど念のため。これについては要検証。

2. DOSプロンプトを立ち上げてJREのbinフォルダへ移動。
通常は"C:\Program Files\Java\jre1.5.0_22\bin"かな。
keytool.exeを使ってエクスポートした証明書をインストール。
下記は標準インストール?時のコマンド例です。
C:\Program Files\Java\jre1.5.0_22\bin>keytool.exe -import -keystore ../lib/security/cacerts -file <エクスポートしたファイル名>
3. キーストアのパスワードを聞かれるので「changeit」と入力。
証明書の情報が表示され、信頼するかどうか聞いてくる。ので、”yes”と入力してEnter
万全を期したい人は-> https://www.verisign.co.jp/repository/root.html#c3pcag5 で確認するといい。
所有者: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
実行者: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
シリアル番号: 18dad19e267de8bb4a2158cdcc6b3b4a
有効日: Wed Nov 08 09:00:00 JST 2006 有効期限: Thu Jul 17 08:59:59 JST 2036
証明書のフィンガープリント:
MD5: CB:17:E4:31:67:3E:E2:09:FE:45:57:93:F3:0A:FA:1C
SHA1: 4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5
追加しますか? [no]:
「証明書がキーストアに追加されました。」と表示されたら終了。
4. Javaコントロールパネルで入っていることが確認できる。起動方法はkeytoolと同じディレクトリで "javacpl.exe" を実行。
ちなみに、「セキュアサイトのCA->システムのタブ」の中にある。名前でソートとかできないので、メンドクサイが、真ん中くらいにある。

疲れた。。。
参考:
https://www.verisign.co.jp/repository/root.html - Verisignのルート証明書の情報。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/solaris/keytool.html - Keytoolの使い方。
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html - jre 1. 5.0 Download