1

クライアントとサーバーの証明書に基づいて認証を構成する基本を理解するための簡単なアプリケーションを作成しようとしています。

jave ee 5、java ee 6チュートリアル http://docs.oracle.com/javaee/6/tutorial/doc/glien.htmlで説明されているように、私はすべてを実行しました。

  1. javaeeチュートリアルの例を開いてhellobasicauthorization(認証後にのみアクセスできる単純なサーブレット)を開き、基本的な承認ではなくクライアント証明書用に再構成しました
  2. 構成済みのweb.xml
  3. 構成済みのglassfish-web.xml
  4. 生成されたクライアント証明書
  5. サーバーが信頼できるようにクライアント証明書をインポートしました。

問題:

アプリケーションをデプロイし、アプリケーションに対応するリンクをたどると、GlassfishサーバーのHTTPステータス400からメッセージが表示されます-このリクエストにはクライアント証明書チェーンがありません。

したがって、クライアント(ブラウザ)はリクエストとともに証明書を送信しないようです

Chrome、Firefox、Internet Explorerに.cer証明書を追加しようとしましたが、追加されました(エラーは表示されません)が、ご覧のとおり、それは役に立ちません。

したがって、問題は次のとおりです。

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

4

1 に答える 1

1

(Glassfishのどこかに)システムプロパティを追加することで、サーバー側でsslをデバッグできます。

-Djavax.net.debug=all

詳細はこちらのページをご覧ください。

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

openssl s_client -connect host:port -debug -msg

次のように表示されます。

...
Acceptable client certificate CA names
/C=PL/O=company/OU=xx/CN=host/emailAddress=email@example.com
/C=PL/O=company/OU=xx/CN=ca/emailAddress=email@example.com
---
SSL handshake has read 2536 bytes and written 116 bytes
...

問題はおそらくサーバー側のトラストストア構成の誤りに関連しています-サーバーはいくつかの受け入れ可能なクライアント証明書CA名を送信します(またはまったく送信しません)が、ブラウザーには提供するものがありません-秘密鍵と証明書がありません許容可能なcaによって発行されます。

于 2012-04-12T08:39:42.290 に答える