在Web應用使用Applet有時是一種不錯的選擇,例如在flex中加入特色上傳功能等就可將Applet做爲備選方案之一。而Applet需要訪問本地資源時需要得到客戶機器的認可,很自然我們會想到網絡知識中的數字簽名(digital signature)。而對java Applet的數字簽名較爲方便。
在數字簽名之前將我們編寫的Applet應用導出jar包,而後主要利用java se中提供的keytool.exe和jarsigner.exe工具,前者用於生成密鑰庫和導出證書,後者用於對Applet jar進行數字簽名。
進行簽名時,我們可以隨意找個目錄,將jar放入其中,而後從命令窗口進入該文件夾,依次如下圖所示執行相關命令,填入密碼信息。執行過程中,我們會發現對應目錄下面會產生一個密鑰庫文件(store尾綴)和一個證書文件(cert尾綴)。
上圖中,紅色陰影部分爲密鑰庫的名字,尾綴爲store;橙色陰影部分爲密鑰庫的別名;綠色陰影部分爲導出的證書,尾綴爲cert;藍色部分是我們手動導出並放入相應文件夾下的jar包。陰影部分讀者可自行命名。
第一次輸入的密鑰密碼,在後續導出證書和簽名jar包時都需要使用。第一步份生成密鑰時要求填寫的名字、單位等信息可以自由寫。
簽名完成後,則可以直接將數字簽名後的jar考入項目中使用。第一次加載applet時瀏覽器會要客戶確認該證書(如下圖所示)。客戶機用戶信任後即可訪問本地資源。
本文簡單引入Java數字簽名的工具及使用方式,讀者只需利用第一幅圖的內容即可完成對相應jar包的數字簽名,而後將jar文件考入項目即可直接應用。更多信息請參考下文連接。
參考:
數字簽名
http://baike.baidu.com/view/7626.htm
http://en.wikipedia.org/wiki/Digital_signature
Java Applet digital signature
http://www.cnblogs.com/tqsummer/archive/2011/01/19/1939013.html
http://blog.csdn.net/shangdyu/article/details/6992568
http://blog.csdn.net/border1985/article/details/666710
https://www.owasp.org/index.php/Digital_Signature_Implementation_in_Java