- - PR -
WebサービスをJavaアプリからSSLでCallさせる方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-24 09:14
いつもお世話になっております。
現在、Webサービスの開発をやっているのですが、問題が発生してしまい 皆さんのお知恵を拝借できればと思い登校しました。 Webサービス(Webサーバ:IIS6/OS:Win2003Server)をC#で作成しました。 WebサービスクライアントAPとして、C#アプリ、Javaアプリを作成し、 WebサービスのURLを指定してWebMethodを実行させたところ問題なく成功しました。 現在、SSL対応できないかと試験を実施中なのですが、ここで問題が発生しました。 Webサービスをインストールしてあるサーバで証明書を作成し、 WebサービスクライアントAPを実行するクライアントPCの IEへクライアント用の証明書をインストールしました。 (合わせてIIS上からWebサービスは、httpsを使用するように設定変更しました。) ここで、C#アプリからWebサービスを使用した場合には、 呼出先URLを http://hostname/test.asmx から https://hostname/test.asmx へ変更しただけで問題なく処理できました。 しかしJavaアプリでは、C#アプリのようにURLをhttpsに変更しただけでは SSLで通信を行うことができませんでした。 (認証が正しくないような実行例外が出ました。) ここからは勘ですが、おそらくIEにインストールした証明書は、 C#アプリ(.Netアプリ)からはうまく認識される (MS製品なので、うまいことできている?)が、 JavaアプリからはIEの証明書が参照されず、 アプリ開発者が自前でJavaアプリに証明書を登録する処理を実装する 必要があるのかなと推測しました。 ちなみに、JavaアプリのWebサービスクライアントのコードは下記で、 実行時にコマンドライン引数で、 0番目:WebサービスURL 1番目:Webサービス関数の引数1 2番目:Webサービス関数の引数2 を渡すように実行しています。 public class makeCall { public static void main(String[] args) { try { makeCall method = new makeCall(); java.net.URL url = new java.net.URL(args[0]); stub.SVRelation control = new stub.SVRelationLocator(); stub.SVRelationSoap stubCall = control.getSVRelationSoap(url); java.lang.String s1 = String.valueOf(args[1]); java.lang.String s2 = String.valueOf(args[2]); Common.OutputResult("発信", stubCall.makeCall(s1, s2)); } catch(Exception e) { e.printStackTrace(); } } } 例えば、java.net.URLをjavax.net.SSLクラスに変更して 実装しなおせば動作するのでしょうか? 何かご存知の方いらっしゃいましたら、ご教授お願いいたします。 |
1