2012-04-12 8 views
1

クライアント証明書とサーバー証明書に基づいて認証を構成する基本を理解するための簡単なアプリケーションを作成しようとしています。それは、その後javeのEE 5、JavaのEE 6つのチュートリアル http://docs.oracle.com/javaee/6/tutorial/doc/glien.html相互認証(クライアント証明書、サーバー証明書)Java EEの構成の正確性を検証する方法は?

    JavaEEのチュートリアルから
  1. 開設例をハローbasicauthorization(唯一の認証後にアクセスすることができ、単純なサーブレット)について説明されて

    することは、私はすべてを行っていますクライアント証明書の代わりに、基本的な権限のためにそれを再構成

  2. 設定済みのweb.xml
  3. 設定済みのglassfish-web.xmlの
  4. 生成されたクライアント証明書
  5. サーバーが信頼できるようにインポートされたクライアント証明書。

問題:私は自分のアプリケーションをデプロイし、アプリケーションに対応する、リンクをたどって

が、私はGlassFishのサーバーのHTTPステータス400からのメッセージを取得 - この要求」ではありませんクライアント証明書チェーンを

だから、クライアント(ブラウザ)私はクロム、Firefoxの、インターネットエクスプローラに.cerの証明書を追加しようとした要求

で証明書を送信していないと、彼らは何のエラーが表示されません(追加されている、らしいです)しかし、あなたが見ているように助けにはならない。

質問:

クライアントの.cer証明書を持つWebブラウザからアプリケーションにアクセスするにはどうすればいいですか?

答えて

1

あなたは、システムのプロパティを(Glassfishの中のどこか)を追加することにより、サーバー側でSSLをデバッグすることができます。

-Djavax.net.debug=all 

は詳細についてはthis pageを参照してください。

openssl s_client -connect host:port -debug -msg 

は、あなたがこのように表示されます:

また、OpenSSLのツールを使用して、クライアントの観点から、デバッグすることができます

あなたの問題は、おそらくサーバ - に悪いトラストストアの設定に関連している
... 
Acceptable client certificate CA names 
/C=PL/O=company/OU=xx/CN=host/[email protected] 
/C=PL/O=company/OU=xx/CN=ca/[email protected] 
--- 
SSL handshake has read 2536 bytes and written 116 bytes 
... 

側サーバーはいくつかを送信しますクライアント証明書のCA名は(またはまったくありません)ですが、ブラウザには何も提供されていません - には秘密鍵+証明書がありません受諾可能なcaによって援助される。

+0

問題は「ブラウザには何も提供されていません - それに秘密鍵+許容可能なCAによって発行された証明書はありません」ということです。どのように私が生成した証明書を使用するブラウザを作るには? – Ievgen

+0

IEでは、証明書に* container *を選択するオプションがあります - あなたは "個人証明書"(このようなもの)を選択する必要があります。サーバーが証明書を要求していますか? –

+0

わかりません。サーバーを信頼できるようにするには、次のコマンドを使用しました。java-home \ bin \ keytool -import -v -trustcacerts -aliasクライアント - エイリアス - ファイルclient.cer -keystore domain-dir/config/cacerts.jks -keypass changeitこれは、ここで提案されているように変更を保存します。http://docs.oracle.com/javaee/6/tutorial/doc/glien.html – Ievgen

関連する問題