2017-10-27 31 views
0

HTTPS経由でクライアント認証を持つSOAP Webサービスを呼び出す必要があります。glassfish SSLHandshakeException:致命的なアラートを受信しました:unknown_ca

クライアント証明書(サーバーをホストしている会社から入手したもの)をkeyStoreファイルにインポートしました。私はまた、サーバー証明書(サーバーからダウンロード)を自分のtrustStoreにインポートしました。私は 'javax.net.ssl.keyStore'と 'javax.net.ssl.keyStorePassword'を適切な値に設定しました。

単純なJavaクライアント(いくつかの追加のjarファイルを含む)からWebサービスを呼び出すと、呼び出しが機能し、サーバーから結果が得られます。

glassfish-4(同じjava、同じkeyStore、同じtrustStore、同じ 'javax.net.ssl.keyStore'値など)内からWebサービスを呼び出すと、例外が発生します 'com.sun.xml .ws.client.ClientTransportException:HTTPトランスポートエラー:javax.net.ssl.SSLHandshakeException:受信された致命的なアラート:unknown_ca '

どちらの場合も同じjava、同じキーストア、同じtrustStoreを使用します。グラスフィッシュを使用しない最初のバージョンが動作するので、証明書は大丈夫です。グラスフィッシュの2番目のバージョンはありません。

glassfish-4は何か特別なことはありますか? 他の(第三者の)ライブラリの問題になりますか? 試してみることができる追加のHTTP/SSL設定はありますか? 他に何ができますか?

誰かアイデア? ありがとうございます。

答えて

0

私はこの問題を発見しました。

Glassfishには、追加のVMプロパティ 'com.sun.enterprise.security.httpsOutboundKeyAlias'が必要です。 これは、クライアント証明書のエイリアスに設定する必要があります。

これは、java-config領域のdomain.xmlに標準で設定されています。 標準の場合、これは-Dcom.sun.enterprise.security.httpsOutboundKeyAlias = s1asとして設定されます。

値s1asを証明書のエイリアスに変更します。

関連する問題