S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

commons-httpclientとSSL

Sun Java 1.5.0_12
commons-httpclient 3.1
James 2.3.1


httpclientにより、既存のアプリケーションからのリクエストを、追加したアプリケーションのServletへ送信するような仕組みを実装した。


Tomcat上で稼動するWebアプリケーションから、追加したアプリケーションのServlethttpsのリクエストを送信するという動作は、正常に行われている。
しかし、バッチ処理のようなJavaアプリケーションからhttpsのリクエストを送信すると、下記のような例外が発生する。

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


原因は、Java上での証明書のインポートを行っていないためで、keytoolコマンドで証明書をインポートすることで解決する。
(証明書をインポートする=ブラウザの操作で、httpsでのサイトの証明書を信頼すると同意?)


但し、既存のアプリケーションではメールを受信し、それをトリガとしてリクエストを送信する仕組みもあり、メールサーバとしてJamesを利用しており、Jamesの(セキュリティポリシの)設定?により、上記例外が発生する問題が解決していない。
そのため、これらの既存及び新しいアプリケーションは、同じlocalhost内で稼動することから、localhost内のみhttp通信を許可し、追加したアプリケーションのServletへのリクエストをhttpとすることを検討している。