0

証明書を使用してトラストストアを作成し、秘密鍵を使用してキーストアを作成しました。私は次のコードを入れ、trsustore マネージャーとキーストア マネージャーをロードし、SSL コンテキストのインスタンスを作成しました。

以下のコードは、Web サービスにリクエストを送信するたびに呼び出されます。axis2 API を使用しています。

SSLContext context = SSLContext.getInstance(protocolVersion); 
context.init(keyManagers, trustManagers, null); 

SSLSocketFactory socketFactory = context.getSocketFactory(); 

SslContextedSecureProtocolSocketFactory secureProtocolSocketFactory = new SslContextedSecureProtocolSocketFactory(context); 

Protocol authhttps = new Protocol("https", secureProtocolSocketFactory, port);
HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setHost(hostname, port, authhttps);
GetMethod httpget  = new GetMethod("/RTAPService/RTAPService");

これも試してみました GetMethod httpget = new GetMethod("/");

httpclient.executeMethod(httpget);

それは私に以下のエラーを与えます..

org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

ホスト名は「qartap.csnet.assurity.sg」で、Web サービスの URL は「https://qartap.csnet.assurity.sg:8443/RTAPService/RTAPService」です。

問題は、「HTTPS」プロトコルを登録するときです。これはアプリケーション全体に影響します。特定のホストのみまたは特定の Web サービスに対して何らかの方法でこれらを設定できますか..???

ホスト名を使用してこれを設定するか、新しいプロトコル自体を作成するかのいずれかです...ここでのソリューションに示されているアプローチを試しました。しかし、それは私に次の例外を与えました..

Web サービス URl を生成されたスタブ コンストラクターに渡すときに、URL の "HTTPS" を独自にカスタマイズした "myHTTPS" に置き換えました。

The system cannot infer the transport information from the myhttps://serverUrl:7001/app/services/RTAPDevService.RTAPDevServiceHttpSoap12Endpoint/ URL.
4

1 に答える 1

0

同じことは、証明書を cacerts ファイルに追加し、それを weblogic にポイントすることで解決されました。最初に、証明書チェーンが正しく cacerts ファイルにインポートされませんでした。また、証明書のインポートに関していくつかの問題がありました。

以下のリンクが参照できます

http://ankursinghal86.blogspot.in/2014/06/authentication-with-client-certificate.html

于 2014-06-27T11:28:15.190 に答える