2007年3月30日金曜日

Javaの証明書の管理

Java Web Startは、なかなか素晴らしい機能だと思う。
最初リリースされた頃は、いったい何なのかさっぱりわからなかったけど。

今日は、以前Java Web StartでJavaアプリケーションを配布した際に
発生したトラブルと、その原因を書き綴っておこう。

WebサーバからJWSを使ってSSLでJavaアプリケーションを配信する際の話。
「安いから」という理由でベリサイン等の大手ではなく某社のサーバ証明書を
使用したところ、JWSでの配布時に「信頼できないサイト」との警告が表示されてしまった。
「そんなバカな!きちんと金を払ったのに!」
と思ったが、とりあえずテストを進めることを優先し、表示されたセキュリティ警告の
ダイアログで「常に信頼する」にチェックを入れる。
その後、アプリがダウンロードされて、アプリがそのWebサーバとSSL通信を
しようとするが、ハンドシェイクで蹴られる。
「常に信頼してるのに、なぜだ!」

原因は、Java Web StartとJava Runtime が管理している証明書の
ストア先が異なるらしく。
Java Web Startで信頼したからといって、それはJava Runtimeには
反映されないから、Javaアプリが通信しようとしたときは、また
「信頼ならねぇ!」となるようだ。

これを回避するには結局keytoolコマンドでその証明書をインポートして
やらなければいけない。

keytool -import -keystore (JAVA_HOME\lib\security\cacerts) -file (サーバー証明書のパス)


ちなみに、ここまで全部さも自分が発見して解決したかのように
書いてますが、開発メンバーが発見してくれた内容を
営業のボクが書いただけです。ほんとすいません。

0 件のコメント: