2011-09-12 15 views
0

双方向SSL認証が必要なSUNWappserverにwebapp-1がデプロイされています。私はそれのためのJavaクライアント-1を書くことができ、それは正常に動作します。2つのWebアプリケーション間のSSLハンドシェイク

しかし、webapp-1用のクライアント2をスタンドアロンJavaプログラムではなくWebサービスとして記述すると、問題が発生しています。

私は、jetty-8サーバーにclient-2をデプロイしています。 SSLハンドシェイク中、JettyはまずSUNWappserverから証明書を取得します(これは問題ありません:信頼できる証明書が見つかりました)。その後、JettyはSUNWappserverから(証明機関と共に)CertificateRequestを受け取ります。しかし、Jettyは空の証明書チェーンで返信します。

何が起こっているのかわかりません。有効にする必要があるjetty-ssl.xml設定には、証明書チェーンで返信するような設定がいくつかありますか?私は(代わりに桟橋サーバーにデプロイするの)スタンドアロンのJavaアプリケーションとしてクライアントを使用するとき、彼らは仕事としてここで私は今

<Set name="KeyStore"><SystemProperty name="jetty.home" default="." />/server-certs/keyStore.jks</Set> 
<Set name="KeyStorePassword">$PASS</Set> 
<Set name="KeyManagerPassword">$PASS</Set> 
<Set name="TrustStore"><SystemProperty name="jetty.home" default="." />/server-certs/trustStore.jks</Set> 
<Set name="TrustStorePassword">$PASS</Set> 
<Set name="certAlias">$CORRECT_ALIAS</Set> 
<Set name="wantClientAuth">true</Set> 

マイTrustStoreおよびキーストアを使用していますオプションが罰金されています。 Jettyサーバーを起動すると、JettyはkeyStoreとtrustStoreを正しく読み取ります。 Jettyサーバーを起動しているときに、jvmオプションとして-Djavax.net.ssl.trustStoreなどを指定してみました。

答えて

0

何が起こっていたのか分かりました。 私がjettyサーバーにデプロイしていたクライアント2は、cxfクライアントでした。それは、jetty-ssl.xmlにkeyStoreとtrustStoreを設定することに加えて、cxf(java-codeまたはcxf.xml)でも設定する必要があることが判明しました。

それ以外の場合、クライアント(桟橋サーバーに配備されていた)がエラーメッセージを出していない(例えば、cxf keyStoreが見つからないなど)、空の証明書チェーンをSUNWappserverに送り返していただけだった。いくつかの種類のメッセージがその理由を見つけるのに役立つはずでした。

関連する注記では、jetty-ssl.xmlに次の項目も設定する必要があります。

<Set name="needClientAuth">true</Set> 

そうでない場合、クライアントは(つまり、桟橋のサーバーに接続している)桟橋サーバへの誤った証明書の空白を送信した場合でも、サーバは無視し、すべてのエラーメッセージを与えないだろう。

関連する問題