0

Tomcat 6 (サーバー) と SmartCard " IDGo 300 " (クライアント)間の相互認証のために、Java アプレットを開発する必要があります。

これを行うために、次のスキームを考えました。

  1. Tomcat (サーバー) は SmartCard (クライアント) にデジタル証明書 (CA によって署名された) の要求を送信します。
  2. クライアントが PIN を入力し、スマート カードで利用可能な証明書を選択すると、アプレットはクライアントの証明書 (CA によって署名されたもの) を tomcat に送信します。tomcat はデジタル証明書を検証し、正しければ証明書を送り返します。
  3. アプレットはサーバーの証明書を検証し、証明書が正しい場合はサーバーに確認を送信します。
  4. サーバーは、Web アプリケーションを使用するためのフル アクセスをクライアントに付与します。

いくつか質問があります:

  1. このスキームは実現可能ですか?
  2. アプレットですべてを管理したいのですが、クライアントがスマート カードを切断すると、サーバーにアクセスできなくなります。
4

1 に答える 1

0

それは実現可能ですか?はい。実用的ですか?いいえ。代わりに、厚い Java アプリケーションを使用することをお勧めします。

まず、証明書を送信するだけでは認証できません。チャレンジ/レスポンス (PIN の入力後にスマート カードの秘密鍵によって作成される署名) のようなものも必要です。

次に、アプレットから任意のハードウェアを使用するには、特別なアクセス許可が必要です。これは、クライアントのアクセス許可を変更するか、アプレットに署名する必要があることを意味します。その後、ユーザーはその特定のタスクのためにアプレットを受け入れる必要があります。

アプレットにはかなり特定の寿命があります。カードの取り外しをアプレットのライフサイクルと同期させたくない場合があります。切断時に送信される応答をユーザーがブロックする場合があります。waitForCardAbsent()別のスレッドで使用して、カードが削除されたかどうかをテストできます。

接続 (SSL なしの HTTP) を信頼できない場合は、アプレット コードを信頼できません。ユーザーは、PIN を信頼できないコードに入力したくない場合があります。

複数のブラウザーと Java ランタイムをサポートしたい場合、数え切れないほどの問題に遭遇します。

マイナーな問題として、javax.smartcardioパッケージが常に利用できるとは限りません。それは無駄でjavaxはありません。

于 2012-07-29T12:20:17.420 に答える