我的特殊使用案例是我必須訪問存儲在客戶端上的數字證書,並使用它們在客戶端和服務器端執行簽名,驗證,加密和解密任務。對於後者,有許多解決方案。關鍵是能夠訪問存儲在客戶端上的證書。X.509數字簽名/加密工作流程/庫建議?
請注意,我所說的「存儲在客戶端上的證書」是故意模糊的。我不想限制想法到系統商店,用戶商店,瀏覽器商店,密碼令牌,Java密鑰存儲,以往任何地方。
多年來,我用以下方法。沿着他們每一個我給予利弊。
- CAPICOM/ActiveX。雖然這是最簡單的工作,但它限制了用戶在Windows上的IE瀏覽器。更糟的是,它現在已經被棄用,只能在32位上運行。
- Java applet。這是跨平臺和跨瀏覽器,但瀏覽器中的Java並不像人們喜歡的那樣普遍,並且很快就消失了(顯然蘋果最近刪除了它)。因此,讓用戶下載並安裝JRE會帶來額外的麻煩。此外,用戶必須執行相對技術性的任務,即爲簽名人設置無限強度的密碼擴展。
事情我聽說過的/的想法,但我還沒有進展遠遠
- 大多數JavaScript的解決方案。他們實現RSA算法,但他們沒有辦法訪問客戶端證書存儲上的數字證書。他們中的大多數生成一個新的密鑰對。
- Flash/Flex。 Flash/flex似乎是最普遍的客戶端技術。他們已經可以訪問攝像頭和麥克風等客戶端硬件。如果他們可以訪問證書商店,那將是可愛的。
- 在微軟網站上給出的CAPICOM的替代品。它規定了CAPICOM的替代品,它們大多是使用.NET框架來做的事情。這對桌面客戶端來說很好。但是對於「腳本」,他們在一個「重要提示」中非常清楚地指出,您必須編寫自己的ActiveX控件。這使我們回到了原點。
我在尋找的是一種方法來解決/解決在客戶端上訪問證書存儲的主要問題。我不在尋找關於RSA算法的討論,也不是爲什麼PKI是愚蠢的,或者爲非對稱加密或使用除web應用程序之外的體系結構或蘋果公司的其他選擇。
您是否找到解決方案? – Saber
我們仍在使用java applet。依靠bouncycastle jar –