W3C正在研究http://www.w3.org/TR/WebCryptoAPI/
以定義一種從javascript生成數字簽名,encrypton等的方法。基本上在DOM
中的window
對象中定義了一個新對象crypto
,它必須提供具有籤名和加密功能的javascript。 Chrome開始實現這個對象,該對象目前在其JavaScript引擎中可用(我認爲處於測試階段),我嘗試使用它來生成一些簽名,似乎正常工作,但我認爲最有用的方式來生成數字簽名此新對象使用OS密鑰庫中的私鑰代替自動生成密鑰材料,但此工作草案中未涵蓋此訪問權限。帶有OS密鑰庫的Chrome上的js簽名
我用一個簽名applet來處理OS密鑰庫(MS,Firefox KS,MAC OS X),但是我想直接用javascript做,如果有可能避免applet最後產生的所有問題天......新的Oracle安全性重新定義,新的MANIFEST.MF屬性,瀏覽器阻塞插件等等,這些都是真正的痛苦!
所以我在尋找一個JavaScript的方式這樣做,似乎所有的主流瀏覽器採取自己的方式:
在Internet Explorer中存在訪問Windows密鑰庫的ActiveXObject的:
// instantiate the CAPICOM objects var store = new ActiveXObject("CAPICOM.Store"); store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); ...
要訪問Firefox密鑰庫似乎Firefox添加
signText
方法window.crypto
(關於Firefox的webCryptoAPI實施here和關於專有實施的更多信息):window.crypto.signText("textToSign", "ask");
編輯:這個Firefox的方法,因爲版本34它是推薦使用,因爲它不是一個標準:https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto
但是對鉻看來,目前並不存在什麼可照着做。
所以任何人都知道如何在Chrome中實現這一點? 任何人都知道在所有的瀏覽器中這樣做的常見js方法?任何建議給我正確的方向將不勝感激。
謝謝!
感謝你的回答,我用applet工作了一年,每天都很難處理它產生的問題。錯誤,新的安全requeiments等。到目前爲止,我在您評論時查看了NativeClient SDK。 +1。謝謝。 – albciff 2014-09-05 13:20:34
@albciff我對Java小程序的體驗**完全一樣**,但我並不真正瞭解可以使用高級數字簽名功能擴展瀏覽器的任何其他多平臺技術。 BTW我剛剛探索了NativeClient SDK,它似乎只提供了非常有限的功能:您無法訪問文件系統,也無法加載MS Crypto Store訪問所需的第三方庫。有關更多詳細信息,請參閱[native-client-discuss郵件列表中的此線程](https://groups.google.com/forum/#!topic/native-client-discuss/C9nR--vt-Ug)。 – jariq 2014-09-05 19:44:01
所以很可能我們遇到了同樣的問題......我最近處理的是applets很久以來,我遇到的問題比以往任何時候都多(java口頭禪:一次寫入運行......不適用於與操作系統交互的applet密鑰庫)。我認爲JavaScript是一種可能的好方法,但就目前而言,並非所有的瀏覽器都帶有這個功能,而每個帶來的瀏覽器都有他自己的實現。再次感謝。 – albciff 2014-09-08 08:03:18