2017-08-16 18 views
1

スタンドアロン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ブラウザでは、まだ運がない。

答えて

2

あなたはIEブラウザに証明書をインストールすることで、正しい軌道に乗っています。これにより、IEはエラーなしでWebサービスにアクセスできます。しかし、クライアントがJava(IEではなく)であるため、証明書をJavaにインストールする必要があります。次のように

これを行うためのJavaコマンドは次のとおりです。

$JAVAHOME/bin/keytool -import -alias service.test.com -keystore $JAVA_HOME/jre/lib/security/cacerts -file ~/certfile.pem 

注:そのJavaがインストールのために、これはデフォルトのキーストアに証明書をインストールします。これは、そのJVMを使用するすべてのJavaプロセスに影響します。キーストアのデフォルトパスワードは「changeit」

+0

このソリューションは動作しますが、「java -Djavax.net.ssl.trustStore = mykeystore ... MyClientClass」を追加する必要があります。これは私が使用していないプログラムを見てきました。 –

+0

cacertsファイルは、VMのデフォルトのトラストストアです。正しいcacertsファイルにcertを追加した場合は、trustStoreをVMパラメータとして手動で指定する必要はありません。ファイルを指定しなければならない場合は、別のjavaインストールのためにcacertsにcertを追加した可能性があります –

関連する問題