0

セキュリティで保護されたサーバー (SSL と CA が構成された Apache/Tomcat) で公開されている SOAP サービスを呼び出そうとしています。

サービスは、承認を処理するために .P12 (PKCS#12) 証明書を想定しています。

SOAPUIを使用したテストはうまく機能します (サービスが呼び出され、正しい結果が返されました) 。

キーストア内に証明書をロードするために KeyTool を処理する必要があると思いますが、それを正しく理解することはできません。

それに加えて、SOAPUIはJVM上で実行されており、JRE keyStore内に証明書をロードする必要はありません(P12証明書を指すだけでよいため)ので、証明書を「ロード」する方法があると思います呼び出し時にオンデマンド?

いくつかの調査の後、実行するCXF構成がいくつかあるようです(ドキュメント

コード: github リポジトリ

VM 引数:

-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.keyStore=c:/job/CDBXXX-XXXXX.p12
-Djavax.net.ssl.keyStorePassword=******

ログ(詳細はこちら):

main, SEND TLSv1 ALERT:  fatal, description = certificate_unknown
main, WRITE: TLSv1 Alert, length = 2
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException:     
   sun.security.validator.ValidatorException: PKIX path building failed:      
   sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid     
   certification path to requested target
main, called close()
main, called closeInternal(true)

ありがとう

4

1 に答える 1

1

javax.net.ssl.SSLHandshakeException は、次のいずれかの問題があることを意味します。

  1. クライアント キーは、サーバーのトラスト ストア内のいずれかの CA によって署名されていません。
  2. クライアント キーは中間 CA によって署名されており、サーバーの信頼ストアに完全な CA チェーンがありません。
于 2013-07-31T13:11:05.810 に答える