10

相互 SSL 認証を使用する Web サービスがあります。クライアントの証明書がインストールされている場合、ブラウザで問題なくアクセスできます。

wsimportサービスにアクセスするためのJavaコードを生成するために、これにアクセスできる必要があります。

を使用して URL にアクセスできるように資格情報を設定するにはどうすればよいwsimportですか?

これは私が試している例ですが、認証できないためにタイムアウトします。

wsimport ./sample.wsdl -p com.company.ws.sample -Xnocompile -d ./src -extension -keep -XadditionalHeaders

助けてくれてありがとう

編集:

これがwsimport印刷されたものです。WSDL は間違いなく有効であり、指定された場所で、認証のために自分の資格情報を渡す方法を理解する必要があります。

wsimport https://wsdl.location.com?WSDL -p com.company.ws.sample -Xnocompile 
-d ./src -extension -keep -XadditionalHeaders


parsing WSDL...

[ERROR] Received fatal alert: handshake_failure

Failed to read the WSDL document: "https://wsdl.location.com?WSDL", because 1) could 
not find the document; /2) the document could not be read; 3) the root element of 
the document is not <wsdl:definitions>.

[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): 

 At least one WSDL with at least one service definition needs to be provided.

    Failed to parse the WSDL.
4

3 に答える 3

13

WsImport javaクラス(source)を直接呼び出して、クライアント証明書を探す場所を知っているJavaに必要なJVMの引数を追加できます。

何かのようなもの

java -classpath C:\jdk160_29\lib\tools.jar -Djavax.net.ssl.trustStore=c:\jdk160_29\.mykeystore com.sun.tools.internal.ws.WsImport https://host:8443/Webservice?wsdl -p com.test -s ./src"

トリックを行う必要があります。

于 2012-11-29T16:31:39.623 に答える
4

_JAVA_OPTIONS 環境変数にすべての追加のシステム プロパティを設定することで、これを行うことができました。Windows バッチ ファイルとしては、次のようになります (必要に応じてパスワードを入力します。

setlocal
set _JAVA_OPTIONS=%_JAVA_OPTIONS% -Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword={...passwordForThePFX...} -Djavax.net.ssl.keyStore=r:\cert.pfx
wsimport -s . -verbose https://your.host.name/path/to/service?wsdl
endlocal

念のため、長い「set」行の Java オプションは次のとおりです。

-Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts"
-Djavax.net.ssl.keyStoreType=PKCS12
-Djavax.net.ssl.keyStorePassword={...passwordForThePFX...}   
-Djavax.net.ssl.keyStore=R:\cert.pfx

trustStore設定を指定する必要がある場合とない場合があります。いくつかのインストールがあり、Javaが間違ったcacertsファイルを取得していたので、そうしなければなりませんでした。

同様にkeyStorePassword、キーストアがパスワードで保護されていない場合は必要ありません。に関してはkeyStoreType、Java キーストアにアクセスしていない場合は、これを指定する必要があります。

最終的に、唯一の「必須」オプションはkeyStore、クライアント証明書とキーが存在する場所を定義する です (クライアント証明書がコア Java 証明書ストアのいずれにもない場合にのみ必須です)。現状では、上記の例は、Windows 証明書ストアからエクスポートして生成された PFX ファイル内のクライアント証明書です。

于 2013-10-14T15:29:55.557 に答える
2


1.ブラウザでssl経由でwsdlをダウンロードする(キーストアをダブルクリックして、デフォルトのブラウザに証明書をインストールする)か、さらに簡単です。 wsdl の内容を表示する soapUI (config/ssl 経由でキーストアをインストール) を使用します
。 2. ダウンロードした wsdl に対して wsimport を実行します

于 2014-10-28T08:28:36.410 に答える