1

Axisで実行されるWebサービスをJavaWebアプリケーション(Tomcatで実行される)で使用する必要があります。Webサービスを作成した会社は、テスト用にHTTPSと自己署名証明書を使用しています。

Netbeansウィザードを実行してWSDLに基づいてWebサービスを生成しましたが、これは正しく実行されています。ブラウザを使用してWebサービスのWebサイトにアクセスすると、SSL証明書が原因で警告が表示され、例外を作成する必要があります。

コードを実行しようとすると、SSL接続が確立されたときに例外が発生します。例外は次のとおりです。

1.1。

com.sun.xml.ws.client.ClientTransportException:HTTPトランスポートエラー:javax.net.ssl.SSLHandshakeException:致命的なアラートを受信しました:handshake_failure

そして時々(コードを変更せずに)

2.2。

com.sun.xml.ws.client.ClientTransportException:HTTPトランスポートエラー:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:見つかりません要求されたターゲットへの有効な認証パス

証明書をJavaVMやTomcatに組み込む必要があると思います。また、信頼できるソースではないことを無視するように指示します。

これを行う方法?この安全なWebサービスを正しく利用するにはどうすればよいですか?

私が提供する情報が十分でない場合は、さらに質問してください。

ありがとう

エゼキエル

アップデート:

私はこの2つのことを試しましたが、どちらも成功しませんでしたが、例外は同じです。

オプション1)

System.setProperty("javax.net.ssl.trustStore","/home/serverapp/BSS-cert.p12");
System.setProperty("javax.net.ssl.trustStorePassword","password");
System.setProperty("javax.net.ssl.trustStoreType","PKCS12");

オプション2)KeyStore ks = KeyStore.getInstance( "pkcs12"); ks.load(new FileInputStream( "/ home / serverapp / BSS-cert.p12")、 "password" .toCharArray());

    KeyStore jks = KeyStore.getInstance( "JKS" );
    jks.load( null );


    KeyManagerFactory kmf = KeyManagerFactory.getInstance( "SunX509" );
    kmf.init( ks, "f0p6k9n2".toCharArray() );

    TrustManagerFactory tmf = TrustManagerFactory.getInstance( "SunX509" );
    tmf.init( jks );

    SSLContext ctx = SSLContext.getInstance( "TLS" );
    ctx.init( kmf.getKeyManagers(), tmf.getTrustManagers(), null );

また、Webサービスが問題だと思ったので、HTTPS接続を確立しようとしましたが、入力ストリームを開くと同じエラーで失敗します。

   String httpsURL = "https://serverurl:443/theservice?wsdl";
   URL myurl = new URL(httpsURL);
   HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
   InputStream ins = con.getInputStream();   //Exception here!
   InputStreamReader isr = new InputStreamReader(ins);
   BufferedReader in = new BufferedReader(isr);
4

4 に答える 4

2

2 つの一般的なアプローチ:
http://ws.apache.org/xmlrpc/ssl.html
WebLogic には独自のものがあります:
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/security/SSL_client。 html#wp1029670

于 2011-03-21T15:48:18.533 に答える
0

おそらく適切な SSL 証明書がありません。このブログ エントリを読んでください: http://blogs.oracle.com/andreas/entry/no_more_unable_to_findここで与えられたプログラムは、私を一度助けてくれました。

于 2011-02-16T08:26:29.370 に答える
0

証明書を信頼するには、証明書に署名した認証局を信頼することを Java に伝える必要があります。自己署名証明書の場合、それは証明書そのものです。javax.net.ssl.trustStore システム プロパティを、接続先のサーバーの証明書の CA を含むキーストアに設定する必要があります。

信頼できない接続エラーを回避するために証明書をフェッチすると、ブラウザーから証明書を取得できる場合があります。証明書を PKCS12 形式でエクスポートするオプションを見つけて、そのファイルを保存してください。コードを実行するときは、javax.net.ssl.trustStore プロパティを保存したばかりのファイルに設定し、javax.net.ssl.trustStoreType を PKCS12 に設定します。

于 2011-02-16T04:06:27.280 に答える
0

署名されていない証明書を信頼できるように構成する必要があると思います。多分これはあなたを助けるでしょう。

于 2011-02-16T03:52:00.163 に答える