2012-07-28 6 views
0

我需要開發一個java applet,用於Tomcat 6(服務器)和SmartCard「IDGo 300」(客戶端)之間的相互認證。用於與智能卡進行雙向認證的Java小程序

爲了做到這一點,我認爲以下方案:

  1. 的Tomcat(服務器)發送到智能卡(客戶端),他的數字證書的請求(由CA簽名)。
  2. 客戶端輸入PIN並選擇智能卡上的可用證書,然後Applet將他的證書(由CA簽名)發送到tomcat。 tomcat驗證數字證書,並且如果正確的話發回他的證書。
  3. 該applet驗證服務器的證書,如果證書正確,則向服務器發送確認。
  4. 服務器提供對客戶端的完全訪問權限以使用Web應用程序。

我有一些問題:

  1. 是這個方案是否可行?
  2. 我想通過我的小應用程序管理所有事情,當客戶端斷開智能卡時,他將失去對服務器的訪問權限。

回答

0

可行嗎?是。這是否實用?不,我會爭論一個厚厚的Java應用程序。

首先,您無法通過簡單地發送證書進行身份驗證。您還需要類似挑戰 - 迴應(PIN輸入後由智能卡上的私鑰創建的簽名)。

其次,您需要特殊權限才能使用Applet中的任何硬件。這意味着您必須更改客戶端上的權限,否則您可能必須對Applet進行簽名,之後用戶必須接受該特定任務的Applet。

Applets具有相當特定的生命週期。您可能不想將卡的移除與Applet的生命週期同步。用戶可能會阻止在您斷開連接時發送的響應。您可以使用waitForCardAbsent()在單獨的線程中測試卡是否已被移除。

如果你不能信任連接(沒有SSL的HTTP),那麼你就不能相信Applet代碼。用戶可能不想將PIN碼輸入不可信的代碼。

如果你想支持多種瀏覽器和Java運行時,你將遇到無數的問題。

作爲一個小問題,javax.smartcardio包可能不總是可用;它不是在javax沒有。

+0

因此,一個小程序會有一個安全問題。我看到了eID項目,我認爲它有相同的外觀。 [鏈接](http://code.google.com/p/eid-applet/) 但我無法整合他們的認證applet滿足我的需求(我已經配置tomcat進行ssl 2路驗證) – xfocus 2012-07-29 12:42:32

+0

我無法評論一般來說比利時的eID小程序,如果不進行適當的研究,我不會評論其系統的安全性。以上是來自我自己的經驗。 – 2012-07-29 12:52:39

+0

我明白你的意思,但我真的需要實施一個智能卡相互認證的解決方案進入我的j2ee應用程序來簽署pdf.but但我迷路了。 – xfocus 2012-07-29 13:43:34

相關問題