2009-12-22 90 views
0

有沒有一種方法可以讓java web應用通過http請求獲取安裝在計算機上的安全證書的信息,並在機器上安裝特定證書時有選擇性地授予訪問權限。基於證書和IP的身份驗證

基本上,要求是,網絡應用程序應該只從公司的筆記本電腦接受請求,否則必須使用適當的錯誤文本拒絕訪問。

(這些可以贏得筆記本電腦與安裝在自己的機器上一定的榮譽證書,也可以是由一組特定的靜態IP地址的)。

回答

2

是的,這是可能使用HTTPS客戶端證書。確切的設置和配置取決於您的應用程序服務器和特定要求,但常見的情況是您創建公司內部CA(證書頒發機構)來頒發可能僅限於特定客戶端IP地址的客戶端證書,並配置您的應用程序服務器HTTPS連接器需要客戶端證書並信任由您自己的CA頒發的證書。

正確的配置已經完成後,客戶端證書(S)是通過servlet請求屬性是由/可用於網絡應用程序:

X509Certificate[] certificates = (X509Certificate[]) 
    request.getAttribute("javax.servlet.request.X509Certificate"); 
0

正如jambjo說 - 你絕對可以讓客戶端證書通過HTTPS進行客戶端身份驗證,如他所述。我建議通過靜態IP,證書很難欺騙,如果您將來需要以不同方式重新配置網絡,則允許更靈活。

一對夫婦其他的想法:

  • 幾乎所有的應用服務器將讓你設置一個可信的證書存儲 - CA證書應用程序將用於HTTPS客戶端驗證接受的列表。將此限制爲提供客戶端證書的CA--無論是內部公司CA還是證書提供者。
  • 內部CA或CA提供商的選擇是一個公司。內部認證機構需要花費人力來建立和維護,認證機構提供商將爲您的每張證書花費您的費用。達到了一個權衡點,自己製作證書更便宜,但是直到你達到這一點時,CA提供商可能會更便宜。
  • 如果您有一個內部CA,並且您的規則是「任何公司機器(具有證書)都可以訪問此應用程序」,那麼您的工作將在應用程序服務器的可信CA列表中完成,因爲您知道公司CA將不會用於公司中的任何人。
  • 如果您有CA提供商,您可能需要進一步限制您的訪問控制,並使用提供的代碼jambjo來獲取證書並查看其中的信息。通常,主題DN(專有名稱)中有一個組織(O)和組織單位(OU)組件,它會告訴您哪個組織生成此證書。你應該能夠檢查確認你有公司電腦。
  • 如果您知道您的CA提供商決不會將您公司的O和OU名稱分發給除您公司的任何人之外的任何人,那麼可以執行O和OU檢查。如果不是這種情況,則可能需要檢查後端數據存儲(如LDAP目錄)以確保用戶或用戶的計算機已知。
  • 也可以將機器的IP地址鏈接到證書 - 通常在構建證書時使用SubjectAltName(主題備用名稱)。我不會推薦它,因爲如果您更改機器的IP地址,您將需要一個新的證書。你的目的似乎不必要的複雜。
+0

感謝您的詳細信息lakshmi。遵循你所說的話,我想在我的本地創建一個poc。我有tomcat和glassfish(與netbeans)。現在看來我需要很多進一步的信息才能在這方面取得進展! a)如何爲我的測試目的創建證書。 b)如何在我的個人筆記本電腦上安裝該軟件。 c)我不認爲我上面提到的服務器支持HTTPS,所以任何已知的開源解決方案呢? d)此外,我將不得不找出如何將證書添加到服務器,最終終止這個poc。 (稍後我會保留這個問題) – frappuccino 2009-12-26 15:30:19

+0

讓我們看看... a)OpenSSL是一個讓您創建自簽名證書的工具。你也可以用它做一個測試CA. b)你需要生成一個密鑰對的證書。我知道Open SLL將允許PKCS12格式。從那裏,大多數瀏覽器都有一個證書上傳過程。 c)tomcat絕對不會HTTPS,http://tomcat.apache.org/tomcat-4.0-doc/ssl-howto.html。如果Glassfish沒有這樣做,我會感到驚訝。當您啓動服務器時,您需要設置「客戶端身份驗證」。 d)服務器需要CA證書而不是最終實體。通常是一個固定而忘記的操作。 – bethlakshmi 2009-12-28 21:42:40

相關問題