私は秘密鍵で証明書とキーストアを使用してトラストアを作成しました。 次のコードを入力し、trsustoreマネージャーとキーストアマネージャーをロードして、SSLコンテキストのインスタンスを作成しました。双方向SSL :: SSLハンドシェイクエラーエラー
以下のコードは、Webサービスへのリクエストを行うたびに呼び出されます。 私たちはaxis2 APIを使用しています。 GetMethod HTTPGET =新しいGetMethod( "/") もこれと試み
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");
。それは、エラーの下に私を与え
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"プロトコル、それは私のアプリケーション全体に影響を与える、どういうわけか特定のホストまたは特定のwebservice ..のためにこれらを設定することはできますか?私はホスト名を使用してこれを設定するか、新しいプロトコル自体を作成したいと思います...私は解決策hereで与えられたアプローチを試みました。しかし、それは私に次の例外を与えました..
生成されたスタブコンストラクタにwebservice URlを渡している間、私は自分のカスタマイズした "myHTTPS"でurlの "HTTPS"を置き換えました。
The system cannot infer the transport information from the myhttps://serverUrl:7001/app/services/RTAPDevService.RTAPDevServiceHttpSoap12Endpoint/ URL.
を参照することができますか?確かに8433は8443でしょうか? – EJP
"* [...]インターネット上のジャーの1つで利用可能です。"インターネット上には多くのジャーがあります。私はあなたが[this](http://code.google.com/p/jsslutils/wiki/ApacheHttpClientUsage)について話していると思います。 – Bruno
私は上記のコードを含み、クライアントにリリースを与えました.Monay彼らはそれをテストし、それが動作するかどうか、またはエラーである場合、あなたが戻ってきます、私はそこにセキュリティの理由のためにローカル環境からwebserviceにアクセスできません。 ...上記のコードとは別に何かが必要なのかどうか尋ねたいのですが···ポートが8443で、リンクに記載されているjarファイルを使用しています.... –