- PR -

WebサービスをJavaアプリからSSLでCallさせる方法

1
投稿者投稿内容
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)