スタンドアロンJavaプログラムからSSLが有効になっているWebサービスにアクセスしようとしています。私はWSDLからクライアントを生成することができましたが、Webサービスを呼び出すときにSSLハンドシェイクの問題が発生しました。私はceritificateをインストールしているJavaからHTPS WebServiceを呼び出す
https://service.testwebservice.com/TestWebServiceExport?wsdl. It failed with:
Got com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: The certificate issued by CN=Corp Production Root CA V1, O=Cord Inc. is not trusted; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error while opening stream from https://service.testwebservice.com/TestWebServiceExport?wsdl.
:以下のエラーメッセージ
はでWSDLにアクセスするためのJavaコード
TestWebService sh = (TestWebService) shs.getTestWebServiceExportTestWebServiceHttpPort();
BindingProvider port = (BindingProvider)sh;
port.getRequestContext().put(BindingProvider.
ENDPOINT_ADDRESS_PROPERTY, args[0]);
System.out.println(((BindingProvider)sh).toString());
以下https://service.test.com/sca/TestWebService?wsdl
を言うことができますされたURLに失敗しましたされていますウェブサイトからIEブラウザでは、まだ運がない。
このソリューションは動作しますが、「java -Djavax.net.ssl.trustStore = mykeystore ... MyClientClass」を追加する必要があります。これは私が使用していないプログラムを見てきました。 –
cacertsファイルは、VMのデフォルトのトラストストアです。正しいcacertsファイルにcertを追加した場合は、trustStoreをVMパラメータとして手動で指定する必要はありません。ファイルを指定しなければならない場合は、別のjavaインストールのためにcacertsにcertを追加した可能性があります –