HTTPS経由でWebサービスに接続しています。それを機能させるために必要だと思うことはすべて実行しましたが、最終的にはハンドシェイクに失敗します。
私は、新しいユーザーとして、「スパム保護」のために2つ以上のリンクを投稿できないことを知りました-たくさんのstackoverflowに感謝します...とにかくここにすべてのリンクが綴られたペーストビン投稿へのリンクがあります...私はここに「link#1」と書きます。これはこれらのリンクへの参照です:http://pastebin.com/y4zGNRC7
- HttpClient(サービスURLのGET)を使用して同じ動作を確認し、実際にCXFプロキシを介してWebサービスを呼び出しました
- キーストアとトラストストアの両方を設定しています-「コード内」の方法(リンク#1)とシステムプロパティの設定の両方を試しました-つまり、System.setProperty( "javax.net.ssl.keyStore"、 "mykeystore.jks" );
- SSLデバッグがオンになっています(javax.net.debug = all)
- SSLデバッグは、キーストアとトラストストアの両方の内容をぼかします(つまり、Javaが「それらについて知っている」ように見えます)-link#2
- クライアント/サーバー通信が行われているようですが、何らかの理由でクラッシュしますlink#3
- ブラウザ(Chrome)とopenssl s_clientの両方でクライアントとCA証明書を使用して、サーバーに正常に接続しました
- wiresharkは、たとえばChrome(link#5)よりもjava(link#4)からのクライアント/サーバートークが少ないことを示しています。
もう1つの奇妙なことは、キーストアを設定したときと設定しないときで同じ動作が発生するように見えることです(唯一の違いは、キーストアの内容がコンソールに出力されることですが、それだけです)。
問題をグーグルで調べてみたところ、stackoverflowで同様の投稿が多数見られましたが、何も役に立ちませんでした。プロトコルバージョン(「TLSv1」、「SSLv3」、さらには奇妙なv2 Hello)を変更してみました。助けていただければ幸いです-私が見落としていたかもしれないいくつかの基本的なことがあるかもしれません...私はここで必死になっています...ありがとう
PS私はFedoraCore15(64ビット)でjava 1.6update30を実行しています